find_package的两种搜索模式都会按照一定规则从路径下搜索.cmake后缀的文件,两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和Cmake中fi...
CONFIG|NO_MODULE:这两个选项二选一即可,表示强制find_package命令使用配置模式搜索,忽略模块模式搜索。 NAMES:默认情况下find_package命令会查找名为<PackageName>的包。如果NAMES选项后指定了名称,则会使用这些名字来查找包而忽略<PackageName>参数。 PATHS/HINTS:配置模式下指定.cmake文件的搜索路径。 NO_XXX_PATH:...
两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和Cmake中find_package命令的搜索模式之配置模式(Config mode)....
cmake_minimum_required(VERSION3.5)project(find_package_learning)find_package(OpenCV4REQUIRED)#查看一下对应的值message(STATUS"OpenCV_DIR : ${OpenCV_DIR}")message(STATUS"OpenCV_INCLUDE_DIRS : ${OpenCV_INCLUDE_DIRS}")message(STATUS"OpenCV_LIBS : ${OpenCV_LIBS}")include_directories(${OPENCV_INCLUDE...
find_package(<PackageName> [version] [EXACT] [QUIET] [REQUIRED] [[COMPONENTS] [components...]] [OPTIONAL_COMPONENTS components...] [CONFIG|NO_MODULE] [NO_POLICY_SCOPE] [NAMES name1 [name2 ...]] [CONFIGS config1 [config2 ...]] ...
find_package(<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 ...]...
1)先尝试使用pkg-config来找到真正的库,pkg-config是系统提供的命令用于找系统中是否存在相关的库(参考pkg-config用法详解),在CMake中使用如下两条,CMake会从<PackageName>.pc文件中读取对应的变量。 find_package(PkgConfig) pkg_check_modules(PC_mymath QUIET mymath) ...
该模式下, CMake 会搜索 <lowercasePackageName>-config.cmake 文件或 <PackageName>Config.cmake 文件。如果 find_package 命令中指定了具体的版本,也会搜索 <lowercasePackageName>-config-version.cmake 或 <PackageName>ConfigVersion.cmake 文件,因此配置模式下通常会提供配置文件...
find_package()命令首先会在模块路径中寻找Find.cmake,这是查找库的一个典型方式。具体查找路径依次为CMake:变量${CMAKE_MODULE_PATH}中的所有目录。如果没有,然后再查看它自己的模块目录/share/cmake-x.y/Modules/($CMAKE_ROOT的具体值可以通过CMake中message命令输出)。这称为模块模式。
在MODULE模式下,cmake通过查找名为Find<PackageName>.cmake的文件来查找包。 首先在变量CMAKE_MODULE_PATH对应的路径中去查找 如果该变量为空或者在该路径下没有找到,则进入cmake的安装目录下查找(比如我这里是/usr/share/cmake_3.17/Module)。 如果以上两个路径下没有找到指定包,则根据命令的MODULE参数设置与否...