04 cmake關於find packet使用

2021-10-03 01:15:08 字數 2543 閱讀 5750

本章要討論的問題:如何使用切換多個版本的依賴包?

學習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...