我该如何使用CMake连接SDL2?

14

我使用了https://github.com/brendan-w/collector/tree/master/cmake中的.cmake文件,并将它们放在与我的CMakeLists.txt相同的目录中,然后我使用了以下代码:

set(CMAKE_MODULE_PATH FindSDL2.cmake FindSDL2_image.cmake)
find_package(SDL2 REQUIRED)

但是我收到了错误提示:

CMake Error at CMakeLists.txt:26 (find_package):
  By not providing "FindSDL2.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "SDL2", but
  CMake did not find one.

  Could not find a package configuration file provided by "SDL2" with any of
  the following names:

    SDL2Config.cmake
    sdl2-config.cmake

  Add the installation prefix of "SDL2" to CMAKE_PREFIX_PATH or set
  "SDL2_DIR" to a directory containing one of the above files.  If "SDL2"
  provides a separate development package or SDK, be sure it has been
  installed.

1
CMAKE_MODULE_PATH 是一个目录,包含模块,而不是模块列表本身。 - Tsyvarev
1个回答

3

CMAKE_MODULE_PATH 变量包含了一组指向 CMake 模块的路径(例如 FindSDL2.cmakeFindSDL2_image.cmake 等)。您应该将这些模块在您的机器上的完整路径添加到此变量中:

list(APPEND CMAKE_MODULE_PATH /path/to/your/SDL2/modules)
find_package(SDL2 REQUIRED)

最近,SDL2提供了一个CMake配置文件,可以帮助CMake找到您的SDL2安装。您的错误消息明确描述了这一点,并指出包配置名称(SDL2Config.cmakesdl2-config.cmake)。要使用此方法让CMake找到SDL2,请使用CMAKE_PREFIX_PATH

list(APPEND CMAKE_PREFIX_PATH /path/to/your/SDL2/config/files)
find_package(SDL2 REQUIRED)

一旦CMake找到了包,它将定义一些SDL2_*变量,可用于您的CMake项目:

...

add_executable(MySDL2Executable main.cpp)
include_directories(MySDL2Executable PRIVATE ${SDL2_INCLUDE_DIRS})
target_link_libraries(MySDL2Executable PRIVATE ${SDL2_LIBRARIES})

请注意,这些变量名称可能因您使用的SDL2版本而异。请查阅CMake模块文件或软件包配置文件本身,以获取已定义SDL2_*变量名称列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接