third_lib_dir 是 libuv-config.cmake中的变量, 用于表示第三方库的所在路径# third_lib_dir 的赋值需要先于find_package执行set(third_lib_dir${CMAKE_CURRENT_SOURCE_DIR}/ext)# 使用config模式查找第三方库find_package(libuv REQUIRED
请注意,如果系统目录(一般是 /usr/local/lib/cmake/ )里有一个Find<package>.cmake文件,但你却不想使用默认的,想自己定义一个Find<package>.cmake,即想让它绕过默认库,则你可以指定 CMAKE_MODULE_PATH ,它的优先级比默认路径要高。 对Config模式,<package>Config.cmake一般放在外部目录下,也就是说这个文件...
首先,find_package 有两种模式,一是Module模式,一是Config模式。 cmake本身不提供任何搜索库的便捷方法,所有搜索库并给变量赋值的操作必须由cmake代码(自己写的)完成,比如下面将要提到的FindXXX.cmake和XXXConfig.cmake。只不过,库的作者通常会提供这两个文件,以方便使用者调用。 两种搜索模式:(其中 XXX 是模块的...
find_package(OpenCV REQUIRED PATHS /usr/local/share/OpenCV NO_DEFAULT_PATH) c. pkg_check_module 编译安装第三方库时,会根据安装位置生成.pc文件,里面记录了头文件、库文件等的地址信息,将.pc文件路径加入pkg-config的环境变量PKG_CONFIG_PATH作为搜索路径。比如linux默认搜索路径/lib/pkgconfig。 pkg_check_mo...
前面有介绍过find_package的两种搜索模式之一模块模式(请参考Cmake命令之find_package介绍和模块模式),本文将介绍另外一种模式:配置模式。 一、配置模式下的.cmake文件 该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<PackageName>Config.cmake文件。如果find_package命令中指定了具体的...
利用cmake的find_package()函数进行CONFIG模式调用时,其会结合安装生成的cmake文件,进行模块的查找。该操作的详细过程,可以参考文章:无我:CMake install 参考地址: CMake part 3: create a config file to be found by find_package()总之,在自定义模块开发中,通过灵活应用CMake的MODULE和C...
现在我们在看一下CONFIG模式下的自定义模块,并调用。 代码地址:https://github.com/huang123aini/CMake-Note/tree/master/find_package/find_package_custom_config 初始目录结构如下: 我们看一下libA的CMakeLists.txt的具体实现: #CMake需要的最低版本cmake_minimum_required(VERSION3.5)project(LibA)add_library(...
CMAKE_MODULE_PATH是一个逗号分割的列表,用来指定CMake 模块搜索路径,有两个命令可能会使用到它,分别是include()和find_package。默认情况,这个列表为空,通常是在项目中设置的。 1.2 配置模式(Config mode) 在这个模式下,CMake尝试寻找名为带有config的后缀为cmake文件(<lowercasePackageName>-config.cmake<Package...
首先在CMAKE_FIND_PACKAGE_REDIRECTS_DIR指定的路径下查找。如果没有找到配置文件,则按照下面的逻辑进行...
CMake did not find one. Could not find a package configuration file provided by "OpenCV" with any of the following names: OpenCVConfig.cmake OpenCV-config.cmake Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set "OpenCV_DIR" ...