我在游戏中使用 SDL2。我一直在使用自定义 FindSDL2.cmake,因为标准 CMake 集中没有。但是,前段时间确实出现了有关 FindSDL2 的帖子。示例:Reddit 帖子。
如果你的 cmake 足够新并且它有 FindSDL2.cmake 文件,你可以这样做:
find_package(SDL2 REQUIRED)
Run Code Online (Sandbox Code Playgroud)
但是当我下载最新的 CMake (3.13.2) 时,它不包含FindSDL2.cmake
.
这是怎么回事?
FindSDL2 从未出现在 CMake 中。根据拉取请求 #149 中的拒绝原因,SDL2 附带了一个SDL2Config.cmake
,它提供了一个cmake 包。find_package
状态的文档find_package(SDL2)
将如下所示:
FindSDL2.cmake
,如果存在就使用它。(模块模式)SDL2Config.cmake
或 中的信息sdl2-config.cmake
。(配置模式)简而言之,请确保您的 SDL2 软件包已安装该SDL2Config.cmake
文件,并且该文件位于您的CMAKE_PREFIX_PATH
. 该文档列出了它所查找的确切路径和前缀。
小智 6
为了轻松集成 SDL2 库,我开发了跨平台的现代 CMake 模块,用于查找和使用 SDL2 库以及其他相关库:
因此,为了集成 SDL2 库,您应该做的唯一事情是:
git clone https://github.com/aminosbh/sdl2-cmake-modules cmake/sdl2
Run Code Online (Sandbox Code Playgroud)
CMakeLists.txt
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)
find_package(SDL2 REQUIRED)
target_link_libraries(${PROJECT_NAME} SDL2::Main)
Run Code Online (Sandbox Code Playgroud)
注意:如果 CMake 没有找到 SDL2 库(在 Windows 中),我们可以指定 CMake 选项,SDL2_PATH
如下所示:
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)
find_package(SDL2 REQUIRED)
target_link_libraries(${PROJECT_NAME} SDL2::Main)
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请阅读 README.md 文件。
这是 SDL2 示例和项目的列表:https ://github.com/aminosbh/sdl-samples-and-projects
归档时间: |
|
查看次数: |
9183 次 |
最近记录: |