東陵網(wǎng)站制作產(chǎn)品推廣策劃方案怎么做
文章目錄
- 基本調(diào)用形式和模塊模式
- 使用方式
?之前我們是使用了絕對路徑來鏈接OpenCV第三方庫,但是現(xiàn)在很多庫一般會自己寫一些cmake文件提供給用戶,用戶可以直接使用其中的內(nèi)置變量即可。使用的命令就是find_package。
基本調(diào)用形式和模塊模式
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE][REQUIRED] [[COMPONENTS] [components...]][OPTIONAL_COMPONENTS components...][NO_POLICY_SCOPE])
?查找并載入一個外部包的設置。查找是否成功可以通過_FOUND變量的值得到。成功查找到包后,我們就可以導入包中的目標。使用QUIET選項可以不顯示查詢過程中產(chǎn)生的信息,比如如果沒有使用REQUIRED選項,即使包沒有被找到,也不會顯示任何信息。使用REQUIRED選項后,如果包沒有被找到,就會產(chǎn)生一個錯誤信息,中斷處理。
?對于必須的包組件可以在COMPONENTS選項后列出(如果使用了REQUIRED選項,也可以在REQUIRED選項后列出)。對于可選的包組件可以在OPTIONAL_COMPONENTS選項后列出。包自身定義了可用的包組件和包被認為找到的條件。
?[version]選項用于指定要查找的包的版本(版本格式為major[.minor[.patch[.tweak]]])。使用EXACT選項后,查找的包的版本需要和指定的版本準確匹配。如果沒有使用[version]選項,沒有給出需要的包組件列表,就會使用外部調(diào)用的相應參數(shù)(包括[version]的EXACT選項)。
?find_package指令有兩種查找包的模式:一種是模塊(Module)模式,一種是配置(Config)模式。默認情況下,首先使用模塊(Module)模式,如果沒有找到對應的模塊(Module),就會使用配置(Config)模式。如果使用了MODULE選項,使用模塊模式失敗后,不會繼續(xù)使用配置(Config)模式。
?模塊(Module)模式下,CMake會搜索一個名為Find.cmake。首先使用CMAKE_MODULE_PATH中的路徑搜索,然后搜索CMake自帶的Find模塊。找到Find.cmake后,CMake會讀取處理這個文件。這個文件包含了要查找的包的信息。
使用方式
?這邊我們還是以OpenCV第三方庫來進行演示。
CMakeLists.txt
find_package(OpenCV REQUIRED)
add_executable(lesson3_opencv main.cpp)
target_include_directories(lesson3_opencv PRIVATE ${OpenCV_INCLUDE_DIRS})
target_link_libraries(lesson3_opencv PRIVATE ${OpenCV_LIBS})
main.cpp
#include<iostream>#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;int main(int argc, char** argv)
{ Mat image;image = imread("C:/cmake_study/lesson2_opencv/1.jpeg");if (image.data == nullptr){//cout <<"圖片不存在" << endl;}else{imshow("meinv", image);waitKey(0);}system("pause");return 0;
}
使用這種方式需要注意我們需要把OpenCV的build文件夾指定到系統(tǒng)變量中。
運行結(jié)果