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

问题描述 投票:0回答:1

我正在尝试使用CMake进行Web汇编来编译C ++项目。我正在使用emscripten,并且想将emscripten端口用于SDL2和Freetype。通常,使用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})

它使用常规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 src/main.cpp src/glad.c src/Game.cpp src/Block.cpp include/jumpyblock/Block.h )
target_link_libraries(project ${SDL2_LIBRARIES} ${FREETYPE_LIBRARIES})

[使用此cmake文件,emcmake cmake .成功运行,但是make抱怨它找不到'SDL2 / SDL.h'。

任何帮助将不胜感激。

c++ cmake port sdl emscripten
1个回答
0
投票

我根据此页面解决了该问题:https://github.com/emscripten-core/emscripten/issues/9259



    cmake_minimum_required(VERSION 3.15)
    project(project)

    set(CMAKE_CXX_STANDARD 20)
    set(USE_FLAGS "-s USE_SDL=2 -s USE_FREETYPE=1 -o project.html -O2")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra ${USE_FLAGS}")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${USE_FLAGS}")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${USE_FLAGS}")

    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})

此以emcmake cmake . && make编译

© www.soinside.com 2019 - 2024. All rights reserved.