目錄
- 1 find_package
- 2 config mode
- 2.1 搜索的文件名
- 2.2 搜索路徑
- 3 module mode
- 3.1 搜索的文件名
- 3.2 搜索路徑
- 參考
1 find_package
這是官方文檔
下面是學習總結:
首先是find_package的作用是什么?引入預編譯的庫。
find_package有兩種模式:config mode和module mode。config mode使用于cmake系庫的引入,反之就是module mode。
2 config mode
find_package(SomeThingNAMESSameThingOtherName # Another name for the packageSomeThing # Also still look for its canonical name
)
2.1 搜索的文件名
# 核心文件
<PackageName>Config.cmake or <LowercasePackageName>-config.cmake
# 版本信息
<PackageName>ConfigVersion.cmake or <LowercasePackageName>-config-version.cmake
2.2 搜索路徑
- 默認搜索路徑前綴,注意這里是前綴,cmake會在其后的 lib/cmake/ 下去找。linux默認在 /usr , windows 默認在 Program Files。
- 可以在 CMAKE_PREFIX_PATH 里追加自定義路徑前綴,有多種方法,比如
# 在CMakeLists.txt中
set(CMAKE_PREFIX_PATH /path/to/libA;/path/to/libB)# 在cmake配置的時候
cmake .. -DCMAKE_PREFIX_PATH=/path/to/libA;/path/to/libB# 設置環境變量
# linux
export CMAKE_PREFIX_PATH=/path/to/libA:/path/to/libB
# windows
set CMAKE_PREFIX_PATH="/path/to/libA;/path/to/libB"
- 指定某些包的搜索路徑,注意不是前綴,比如
# 搜索的報名為 SomePackage
set(SomePackage_DIR /opt/somepackage/lib/cmake/SomePackage)
3 module mode
如果module mode搜索失敗,才會進入config mode。在module mode 搜索的文件名是:
3.1 搜索的文件名
Find<PackageName>.cmake
cmake維護了常用庫的這個搜索文件。如果cmake沒有維護,就只能參考這個教程自己寫了。
3.2 搜索路徑
搜索路徑可以通過CMAKE_MODULE_PATH設置。
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(Foo) # Loads ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Foo.cmake
find_package(Bar) # Loads ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindBar.cmake
參考
- Windows使用cmd命令行中查看、修改、刪除與添加環境變量