我在游戏中使用SDL2。我一直在使用自定义FindSDL2.cmake,因为标准CMake集中没有人。但是,前段时间关于FindSDL2的帖子确实出现了。示例:Reddit post。
如果你的cmake足够新并且它有FindSDL2.cmake文件,你可以这样做:
find_package(SDL2 REQUIRED)
但是当我下载最新的CMake(3.13.2)时,它不包括FindSDL2.cmake
。
这是怎么回事?
FindSDL2从未出现在CMake中。根据pull request #149的拒绝原因,SDL2附带了SDL2Config.cmake
,它提供了cmake package。 find_package
的文档指出find_package(SDL2)
的行为如下:
FindSDL2.cmake
,如果存在则使用它。 (模块模式)SDL2Config.cmake
或sdl2-config.cmake
中的信息。 (配置模式)简而言之,请确保您的SDL2软件包已安装SDL2Config.cmake
文件,该文件位于CMAKE_PREFIX_PATH
上。该文档列出了它所查看的确切路径和前缀。
为了轻松集成SDL2库,我开发了cross-platform modern CMake modules来查找和使用SDL2库以及其他相关库:
因此,为了集成SDL2库,您应该做的唯一事情是:
git clone https://github.com/aminosbh/sdl2-cmake-modules cmake/sdl2
CMakeLists.txt
中添加以下行list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/sdl2)
find_package(SDL2 REQUIRED)
target_link_libraries(${PROJECT_NAME} SDL2::Main)
注意:如果CMake没有找到SDL2库(在Windows中),我们可以如下指定CMake选项SDL2_PATH
:
cmake .. -DSDL2_PATH="/path/to/sdl2"
有关更多详细信息,请阅读README.md文件。 这是SDL2样本和项目的列表:https://github.com/aminosbh/sdl-samples-and-projects