【发布时间】:2019-03-27 05:22:26
【问题描述】:
我正在使用 SDL2 开发一个小型项目,并且我正在使用 cmake 构建和编译代码,以便它可以在不同的平台(主要是 windows 和 linux)上运行。现在我无法在 Windows 上使用 find_package 函数找到 SDL2 库。
我已经实现了我自己的 FindSDL2.cmake 文件,该文件基于一些链接到与此类似问题的博客,但它仍然找不到 SDL2 库。
我看到的另一个解决方案是将安装 SDL2 的路径传递给 CMAKE_PREFIX_PATH,但除非我遗漏了什么,否则这意味着如果我将我的代码放在 github 上并且有人想要构建它并运行它他们自己也必须通过他们安装 SDL2 的路径,这似乎有点烦人,也不是其他类似的开源项目正在做的。
这是我的 CMakeLists.txt 文件
cmake_minimum_required(VERSION 3.0.0)
project(Generic-Fighting-Game VERSION 0.1.0)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
include(CTest)
enable_testing()
find_package(SDL2 REQUIRED)
include_directories("${SDL2_INCLUDE_DIR}")
add_executable(Generic-Fighting-Game src/main.cpp)
target_link_libraries(Generic-Fighting-Game ${SDL2_LIBRARY})
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
并使用了在这里找到的 FindSDL2.cmake https://github.com/brendan-w/collector/blob/master/cmake/FindSDL2.cmake,因为我对 cmake 了解不够,无法制作自己的 FindSDL2.cmake 文件
在构建目录上运行 make 后,会出现以下错误
C:\Users\HP\Documents\Generic-Fighting-Game\build>make
CMake Error at C:/Program Files/CMake/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find SDL2 (missing: SDL2_LIBRARY SDL2_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
cmake/FindSDL2.cmake:163 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
CMakeLists.txt:9 (find_package)
-- Configuring incomplete, errors occurred!
See also "C:/Users/HP/Documents/Generic-Fighting-Game/build/CMakeFiles/CMakeOutput.log".
See also "C:/Users/HP/Documents/Generic-Fighting-Game/build/CMakeFiles/CMakeError.log".
Makefile:604: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
感谢任何帮助!
【问题讨论】: