使用 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})