小编Ast*_*joe的帖子

如何在 cmake 中使用 emscripten 端口(SDL2 和 Freetype)

我正在尝试使用 CMake 将 C++ 项目编译为 webassembly。我正在使用 emscripten,我想使用 SDL2 和 Freetype 的 emscripten 端口。通常,当使用 emcc 进行编译时,您将使用以下标志:-USE_SDL=2 和 -USE_FREETYPE=1,以便包含这些端口。但是我不知道如何使用 CMake 实现这一点。

这是我的 CMakeList 文件:


cmake_minimum_required(VERSION 3.15)
project(project)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

find_package(SDL2 REQUIRED)
find_package(Freetype REQUIRED)
include_directories(${CMAKE_SOURCE_DIR}/include ${SDL2_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS})

add_executable(project src/main.cpp src/glad.c src/Game.cpp src/Block.cpp include/jumpyblock/Block.h)
target_link_libraries(project ${SDL2_LIBRARIES} ${FREETYPE_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

它使用常规 cmake 编译并成功运行。

到目前为止,我已经尝试使用 编译emcmake cmake . && make,这给了我一个错误,说它找不到 SDL2 的包配置文件。

我已经尝试修改 CMakeList 文件以使用端口的 emcc 标志:


cmake_minimum_required(VERSION 3.15)
project(project)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -USE_SDL=2 -USE_FREETYPE=1")

include_directories(${CMAKE_SOURCE_DIR}/include ${SDL2_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS})

add_executable(project …
Run Code Online (Sandbox Code Playgroud)

c++ port sdl cmake emscripten

5
推荐指数
2
解决办法
1421
查看次数

标签 统计

c++ ×1

cmake ×1

emscripten ×1

port ×1

sdl ×1