find_package 命令高级工作模式(Full Signature)。 只有在 find_package() 中指定 CONFIG、 NO_MODULE 等关键字,或者 Module 模式查找失败后才会进入到 Config 模式。 因此,find_package工作模式流程图为: 三、参数解释 3.1 Module 模式 find_package(<package>[version] [EXACT] [QUIET] [MODULE] [REQUIRED] [...
find_package的两种搜索模式都会按照一定规则从路径下搜索.cmake后缀的文件,两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和Cmake中fi...
find_package(<PackageName>[version][EXACT][QUIET][REQUIRED][[COMPONENTS][components...]][CONFIG|NO_MODULE][NO_POLICY_SCOPE][NAMESname1[name2...]][CONFIGSconfig1[config2...]][HINTSpath1[path2...]][PATHSpath1[path2...]][PATH_SUFFIXESsuffix1[suffix2...]][NO_DEFAULT_PATH][NO_PACKA...
find_package(<package> [version] [EXACT] [QUIET] [REQUIRED] [[COMPONENTS] [component1] [component2] ...]) 其中,<package>参数是要查找的依赖库的名称,比如Boost、OpenCV等。[version]可以指定库文件的版本号。[EXACT]表示必须精确匹配指定的版本号。[QUIET]表示在找不到库文件时不输出任何错误信息。[RE...
[EXACT]要求版本完全匹配 [QUIET]禁用信息通知 [MODULE]这个命令采用MODE模式寻找包 [REQUIRED]可以省略,后面接组件名称 [[COMPONENTS] [components...]]组件 [OPTIONAL_COMPONENTS components...]可选组件 2.2 全特征(Full Signature) find_package(<PackageName> [version] [EXACT] [QUIET] ...
用户可以设置CMAKE_FIND_PACKAGE_PREFER_CONFIG变量为TRUE,让CMake优先使用Config模式。 详细的模块查找过程(翻译的官方文档) find_packge完成的参数列表 find_package(<PackageName> [version] [EXACT] [QUIET][REQUIRED] [[COMPONENTS] [components...]][OPTIONAL_COMPONENTS components...][CONFIG|NO_MODULE][NO...
前面有介绍过find_package的两种搜索模式之一模块模式(请参考Cmake命令之find_package介绍和模块模式),本文将介绍另外一种模式:配置模式。 一、配置模式下的.cmake文件 该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<PackageName>Config.cmake文件。如果find_package命令中指定了具体的...
Module模式下find_package()的用法 find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE] [REQUIRED] [[COMPONENTS] [components...]] [OPTIONAL_COMPONENTS components...] [NO_POLICY_SCOPE]) Module模式下,相比于Config模式,可选配置参数少一些,并且如果按用户指定的配置却找不到包,就会自动进入Co...
find_package是CMake中用于查找并加载外部库的指令。它可以根据指定的参数在系统或用户指定的路径中查找库文件,并生成相应的变量供后续使用。 2 find_package基本语法 find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE][REQUIRED] [[COMPONENTS] [components...]][OPTIONAL_COMPONENTS components...]...
find_package(Foo 2.0 EXACT REQUIRED) Foo/CMakeLists.txt: set(Foo_SOVERSION 1) set(Foo_VERSION ${Foo_SOVERSION}.8) Why doescmake Myprojectnot fail? It only notifies -- Found Foo: /usr/local/lib/libfoo.so (Required is exact version "2.0") ...