在CMake中FindSDL2发生了什么?

问题描述 投票:3回答:2

我在游戏中使用SDL2。我一直在使用自定义FindSDL2.cmake,因为标准CMake集中没有人。但是,前段时间关于FindSDL2的帖子确实出现了。示例:Reddit post

如果你的cmake足够新并且它有FindSDL2.cmake文件,你可以这样做:

find_package(SDL2 REQUIRED)

但是当我下载最新的CMake(3.13.2)时,它不包括FindSDL2.cmake

这是怎么回事?

cmake sdl-2
2个回答
2
投票

FindSDL2从未出现在CMake中。根据pull request #149的拒绝原因,SDL2附带了SDL2Config.cmake,它提供了cmake packagefind_package的文档指出find_package(SDL2)的行为如下:

  • 寻找FindSDL2.cmake,如果存在则使用它。 (模块模式)
  • 否则,请使用SDL2Config.cmakesdl2-config.cmake中的信息。 (配置模式)

简而言之,请确保您的SDL2软件包已安装SDL2Config.cmake文件,该文件位于CMAKE_PREFIX_PATH上。该文档列出了它所查看的确切路径和前缀。


2
投票

为了轻松集成SDL2库,我开发了cross-platform modern CMake modules来查找和使用SDL2库以及其他相关库:

因此,为了集成SDL2库,您应该做的唯一事情是:

  1. 在项目中克隆SDL2 CMake模块:
git clone https://github.com/aminosbh/sdl2-cmake-modules cmake/sdl2
  1. 在主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

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