使用 find package 和 Findpackage.cmake 模块
使用 CMake 查找已安装软件包的默认方法是将 find_package
函数与 Find<package>.cmake
文件结合使用。该文件的目的是定义包的搜索规则并设置不同的变量,例如 <package>_FOUND
,<package>_INCLUDE_DIRS
和 <package>_LIBRARIES
。
CMake 中默认定义了许多 Find<package>.cmake
文件。但是,如果你需要的软件包没有文件,你可以随时编写自己的文件并将其放在 ${CMAKE_SOURCE_DIR}/cmake/modules
(或任何其他目录中,如果 CMAKE_MODULE_PATH
被覆盖)
可以在手册(v3.6)中找到默认模块列表。必须根据项目中使用的 CMake 版本检查手册,否则可能会丢失模块。也可以使用 cmake --help-module-list
找到已安装的模块。
对于 Github 上的 FindSDL2.cmake
有一个很好的例子
这是一个需要 SDL2 的基本知识:
cmake_minimum_required(2.8 FATAL_ERROR)
project("SDL2Test")
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules")
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
add_executable(${PROJECT_NAME} main.c)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})