東陵網(wǎng)站制作產(chǎn)品推廣策劃方案怎么做
文章目錄
- 基本調(diào)用形式和模塊模式
- 使用方式
?之前我們是使用了絕對(duì)路徑來(lái)鏈接OpenCV第三方庫(kù),但是現(xiàn)在很多庫(kù)一般會(huì)自己寫(xiě)一些cmake文件提供給用戶,用戶可以直接使用其中的內(nèi)置變量即可。使用的命令就是find_package。
基本調(diào)用形式和模塊模式
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE][REQUIRED] [[COMPONENTS] [components...]][OPTIONAL_COMPONENTS components...][NO_POLICY_SCOPE])
?查找并載入一個(gè)外部包的設(shè)置。查找是否成功可以通過(guò)_FOUND變量的值得到。成功查找到包后,我們就可以導(dǎo)入包中的目標(biāo)。使用QUIET選項(xiàng)可以不顯示查詢過(guò)程中產(chǎn)生的信息,比如如果沒(méi)有使用REQUIRED選項(xiàng),即使包沒(méi)有被找到,也不會(huì)顯示任何信息。使用REQUIRED選項(xiàng)后,如果包沒(méi)有被找到,就會(huì)產(chǎn)生一個(gè)錯(cuò)誤信息,中斷處理。
?對(duì)于必須的包組件可以在COMPONENTS選項(xiàng)后列出(如果使用了REQUIRED選項(xiàng),也可以在REQUIRED選項(xiàng)后列出)。對(duì)于可選的包組件可以在OPTIONAL_COMPONENTS選項(xiàng)后列出。包自身定義了可用的包組件和包被認(rèn)為找到的條件。
?[version]選項(xiàng)用于指定要查找的包的版本(版本格式為major[.minor[.patch[.tweak]]])。使用EXACT選項(xiàng)后,查找的包的版本需要和指定的版本準(zhǔn)確匹配。如果沒(méi)有使用[version]選項(xiàng),沒(méi)有給出需要的包組件列表,就會(huì)使用外部調(diào)用的相應(yīng)參數(shù)(包括[version]的EXACT選項(xiàng))。
?find_package指令有兩種查找包的模式:一種是模塊(Module)模式,一種是配置(Config)模式。默認(rèn)情況下,首先使用模塊(Module)模式,如果沒(méi)有找到對(duì)應(yīng)的模塊(Module),就會(huì)使用配置(Config)模式。如果使用了MODULE選項(xiàng),使用模塊模式失敗后,不會(huì)繼續(xù)使用配置(Config)模式。
?模塊(Module)模式下,CMake會(huì)搜索一個(gè)名為Find.cmake。首先使用CMAKE_MODULE_PATH中的路徑搜索,然后搜索CMake自帶的Find模塊。找到Find.cmake后,CMake會(huì)讀取處理這個(gè)文件。這個(gè)文件包含了要查找的包的信息。
使用方式
?這邊我們還是以O(shè)penCV第三方庫(kù)來(lái)進(jìn)行演示。
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)變量中。
運(yùn)行結(jié)果