cmake.org/cmake/help/la find_package 命令用法举例 find_package(OpenCV) 查找名为 OpenCV 的包,找不到不报错,事后可以通过 ${OpenCV_FOUND} 查询是否找到。 find_package(OpenCV QUIET) 查找名为 OpenCV 的包,找不到不报错,也不打印任何信息。 find_package(OpenCV REQUIRED) # 最常见用法 查找名为...
默认情况下,find_package命令会首先尝试在MODULE_PATH中查找相应的find.cmake文件。如果指定了该参数,find_package命令将只使用CMake内置的文件搜索机制来查找库或框架。 find_package(MyLib NO_MODULE) 上述代码表示禁用find_package命令的模块模式,只使用CMake内置的文件搜索机制来查找MyLib库。 NO_DEFAULT_PATH:可...
这条指令会生成mathTarget.cmake文件,里面定义了导出的目标及相关的信息。 接下来我们要生成mathConfig.cmake文件,并安装在lib/cmake/math include(CMakePackageConfigHelpers) configure_package_config_file( ${PROJECT_SOURCE_DIR}/cmake/mathConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/mathConfig.c...
可以看到在执行 find_package(OpenCV 3 REQUIRED) 命令后,CMake 找到了我们安装的位于 /usr/local 下的 OpenCV 库,并设置了 CMake 变量 OpenCV_DIR 为 OpenCV 库的配置文件所在路径,正是通过载入这个路径下的 OpenCVConfig.cmake 配置文件才能配置好 OpenCV 库,然后在 OpenCVConfig.cmake 配置文件中定义了变量 ...
1 FIND_PACKAGE FIND_PACKAGE([version] [EXACT] [QUIET] [NO_MODULE] [ [ REQUIRED | COMPONENTS ] [ componets... ] ] ) 用来调用预定义在 CMAKE_MODULE_PATH 下的 Find.cmake 模块。 也可以自己定义 Find模块,将其放入工程的某个目录中,通过 SET(CMAKE_MODULE_PATH dir)设置查找路径,供工程FIND_PA...
cmake --build build --target install 此时我们便可以通过与引入curl库一样的方式引入glog库了 find_package(GLOG)add_executable(glogtest glogtest.cc)if(GLOG_FOUND) # 由于glog在连接时将头文件直接链接到了库里面,所以这里不用显示调用target_include_directoriestarget_link_libraries(glogtest glog::glog)els...
一般来说,Find<PackageName>.cmake文件不是随包本身一起提供的,更多的是外部针对已有包的重新包装,例如操作系统、Cmake程序、甚至是调用find_package命令的工程针对已有的包提供针对该包的.cmake文件。 1.2 配置模式(Config mode) 该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<PackageName...
一般来说,Find<PackageName>.cmake文件不是随包本身一起提供的,更多的是外部针对已有包的重新包装,例如操作系统、Cmake程序、甚至是调用find_package命令的工程针对已有的包提供针对该包的.cmake文件。 1.2 配置模式(Config mode) 该模式下,CMake会搜索<lowercasePackageName>-config.cmake文件或<Pa...
在cmake_modules中复制几个文件进去,他们都已经在github里,这几个文件分别叫做FindPackage.cmake, cmake_uninstall.cmake.in, install_package.cmake, PackageConfig.cmake.in, PackageConfigVersion.cmake.in, PkgConfig.pc.in。这些文件都是些毛啊?其实我也没有去关心他们具体的内容是什么,但是可以直接使用来他...
package 在cmake 的编译体系中,package 用来指代一个依赖库,包括一些头文件、动态库、静态库等等,在 CMakeFileLists.txt 中通过find_package()命令可以很轻易实现。 比如很多同学可能会用 OpenCV 进行图像开发,它是个非常有名的开源库,它有 10 来个库文件、几十个头文件,因此如何正确引用它就是一件值得小心翼翼...