网站空间如何申请,上海网站制作商,北京网站建设1000zhu,新站seo竞价文章目录 基本调用形式和模块模式使用方式 之前我们是使用了绝对路径来链接OpenCV第三方库#xff0c;但是现在很多库一般会自己写一些cmake文件提供给用户#xff0c;用户可以直接使用其中的内置变量即可。使用的命令就是find_package。 基本调用形式和模块模式
find_packa… 文章目录 基本调用形式和模块模式使用方式 之前我们是使用了绝对路径来链接OpenCV第三方库但是现在很多库一般会自己写一些cmake文件提供给用户用户可以直接使用其中的内置变量即可。使用的命令就是find_package。 基本调用形式和模块模式
find_package(PackageName [version] [EXACT] [QUIET] [MODULE][REQUIRED] [[COMPONENTS] [components...]][OPTIONAL_COMPONENTS components...][NO_POLICY_SCOPE])查找并载入一个外部包的设置。查找是否成功可以通过_FOUND变量的值得到。成功查找到包后我们就可以导入包中的目标。使用QUIET选项可以不显示查询过程中产生的信息比如如果没有使用REQUIRED选项即使包没有被找到也不会显示任何信息。使用REQUIRED选项后如果包没有被找到就会产生一个错误信息中断处理。 对于必须的包组件可以在COMPONENTS选项后列出(如果使用了REQUIRED选项也可以在REQUIRED选项后列出)。对于可选的包组件可以在OPTIONAL_COMPONENTS选项后列出。包自身定义了可用的包组件和包被认为找到的条件。 [version]选项用于指定要查找的包的版本(版本格式为major[.minor[.patch[.tweak]]])。使用EXACT选项后查找的包的版本需要和指定的版本准确匹配。如果没有使用[version]选项没有给出需要的包组件列表就会使用外部调用的相应参数(包括[version]的EXACT选项)。 find_package指令有两种查找包的模式一种是模块(Module)模式一种是配置(Config)模式。默认情况下首先使用模块(Module)模式如果没有找到对应的模块(Module)就会使用配置(Config)模式。如果使用了MODULE选项使用模块模式失败后不会继续使用配置(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
#includeiostream#includeopencv2/core/core.hpp
#includeopencv2/highgui/highgui.hppusing 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文件夹指定到系统变量中。 运行结果