本章要討論的問題:如何使用切換多個版本的依賴包?
學習find_packet,並掌握以下內容:
find_packet()有兩種模式,module模式和config模式,其中module模式是基礎用法,config模式較為複雜。
module模式下,如果按照使用者指定的配置找不到包,主會自動進入config模式
find_package([version] [exact] [quiet] [module]
[required] [[components] [components...]]
[optional_components components...]
[no_policy_scope])
version 如果指定就必須檢查找到的包的版本是否與version相容
exact 與version配合使用,如果指定version的同時又指定exact,必須檢查找到的包的版本是否與version匹配
quiet 如果查詢失敗,不會在螢幕上輸出(如果指定了required,則quiet失效)
module 只在module模式下查詢
required 表示一定要找到包,如果失敗則停止cmake
components components 表示一定要找到元件,如果失敗則停止cmake
optional_components components 表示找不到元件,也繼續執行cmake
查詢順序:
module模式下查詢名為find.cmake
的檔案
先在 cmake_module_path 變數對應的路徑下查詢,如果路徑為空或者查詢失敗,則在cmake安裝時的module目錄下查詢
find_package([version] [exact] [quiet]
[required] [[components] [components...]]
[config|no_module]
[no_policy_scope]
[names name1 [name2 ...]]
[configs config1 [config2 ...]]
[hints path1 [path2 ... ]]
[paths path1 [path2 ... ]]
[path_suffixes suffix1 [suffix2 ...]]
[no_default_path]
[no_package_root_path]
[no_cmake_path]
[no_cmake_environment_path]
[no_system_environment_path]
[no_cmake_package_registry]
[no_cmake_builds_path] # deprecated; does nothing.
[no_cmake_system_path]
[no_cmake_system_package_registry]
[cmake_find_root_path_both |
only_cmake_find_root_path |
no_cmake_find_root_path])
查詢順序:
config模式下查詢名為.config.cmake
或-config.cmake
的檔案。查詢順序如下:
_root 的cmake變數或者環境變數
注意:如果指定了 _dir cmake變數,那麼 _root 將不起作用
可以通過設定no_cmake_path來關閉這一查詢順序
可以通過no_cmake_environment_path來跳過
hint欄位指定的路徑
系統環境變數path
其中如果是以/bin或者/sbin結尾的,會自動轉化為其父目錄通過指定no_system_environment_path來跳過
儲存在cmake的"user package registry"(使用者包登錄檔)中的路徑。
通過設定no_cmake_package_registry,或者:設定cmake_find_package_no_package_registry為true來避開
通過設定no_cmake_system_path來跳過
在cmake的"system package registry"(系統包登錄檔)中查詢。
通過設定no_cmake_system_package_registry跳過。或者通過設定cmake_find_package_no_system_package_registry為true
從paths欄位指定的路徑中查詢
關於ubantu安裝cmake
bootstrap make j8 sudo make install驗證版本 cmake versioncmake version 3.9.0 cmake suite maintained and supported by kitware kitware.com cmake 這種方式可以安裝最新版...
CMake 學習筆記 04 常用變數和指令
源 見 cmake 中支援變數來控制構建過程。乙個變數可通過 取得其值,在 if 語句裡面,直接使用變數名而不需要取值。通過 set 指令能顯式地自定義變數,有一些指令會隱式地建立變數,如 project 指令,會同時建立 source dir和 binary dir變數。常用的一些變數 proje...
關於cmake編譯OPENCV qt再呼叫
到3.0,opencv模組化了,很多運算元並不打包在一起,所以不管是用msvc也好還是mingw都需要再合併編譯.那就乾脆用qt,真香.qt官方文章 這是我project的.pro檔案新增的標頭檔案和lib,includepath d opencv compiledopencv3.4.3withco...