PATHS/HINTS:配置模式下指定.cmake文件的搜索路径。 NO_XXX_PATH:配置模式下忽略指定的路径。 3.实际例子 # mylibConfig.cmake,假定它位于./mylib/mylib目录下 # 作用就是校验COMPONENTS是否是test,只有当COMPONENTS为空或者为test时,包mylib才会被找到 message(${mylib_FIND_COMPONENTS}) # `find_package`...
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...
1、find_path find_path 一般用于在某个目录下查找一个或者多个头文件,命令的执行结果会保存到 <VAR> 中。同时命令的执行结果也会默认缓存到 CMakeCache.txt 中。 (1) 格式 find_path 的格式如下: find_path (<VAR>NAMES name1 [name2 ...] [HINTS [path| ENVvar]... ] [PATHS [path| ENVvar].....
find_package的两种搜索模式都会按照一定规则从路径下搜索.cmake后缀的文件,两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和Cmake中fi...
一般来说,Find<PackageName>.cmake文件不是随包本身一起提供的,更多的是外部针对已有包的重新包装,例如操作系统、Cmake程序、甚至是调用find_package命令的工程针对已有的包提供针对该包的.cmake文件。 1.2 配置模式(Config mode) 该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<Pa...
find_package( [version] [EXACT] [QUIET] [[REQUIRED|COMPONENTS] [components...]] [NO_MODULE] [NO_POLICY_SCOPE] [NAMES name1 [name2 ...]] [CONFIGS config1 [config2 ...]] [HINTS path1 [path2 ... ]] [PATHS path1 [path2 ... ]] [PATH_SUFFIXES suffix1 [suffix2 ...]] [NO...
find_package命令:找到(通常对于项目来说是外部的东西)并加载包特定的细节。 一、搜寻模式 搜寻模式是cmake搜索所需要包的方法,可分为模块模式(Module mode)和(配置模式)Config Mode。 1.1 模块模式(Module mode) 在这种模式下,CMake将会搜寻一个名字叫做Find<PackageName>.cmake的文件。
首先,find_package 有两种模式,一是Module模式,一是Config模式。 cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码(自己写的)完成,比如下面将要提到的FindXXX.cmake和XXXConfig.cmake。只不过,库的作者通常会提供这两个文件,以方便使用者调用。
find_library ( <VAR> name | NAMES name1 [name2 ...] [NAMES_PER_DIR] [HINTS [path | ENV var]... ] [PATHS [path | ENV var]... ] [PATH_SUFFIXES suffix1 [suffix2 ...]] [DOC "cache documentation string"] [NO_CACHE] [REQUIRED] [NO_DEFAULT_PATH] [NO_PACKAGE_ROOT_PATH] [...
最终找到了原因:cmake 3.5(我没有一个个版本去试,至少这个3.1,3.5是有问题的)以前的版本中的FindHDF5.cmake有bug,进一步的原因是对HDF5_ROOT环境变量的用法错误,造成HDF5_ROOT无效,下面这是FindHDF5.cmake其中一段代码: 代码语言:javascript 复制 find_program(HDF5_C_COMPILER_EXECUTABLENAMESh5cc h5pccHINTSENV...