find_package的两种搜索模式都会按照一定规则从路径下搜索.cmake后缀的文件,两种模式下的.cmake文件作用都是为了给find_package命令的调用方返回有关包的信息(头文件路径、库文件路径、编译连接选项、版本信息等等),对于两种模式的进一步说明可以参看Cmake中find_package命令的搜索模式之模块模式(Module mode)和Cmake中fi...
cmake_minimum_required(VERSION2.8)project(find_package_learning)find_package(OpenCV3REQUIRED)message(STATUS "OpenCV_DIR = ${OpenCV_DIR}")message(STATUS "OpenCV_INCLUDE_DIRS = ${OpenCV_INCLUDE_DIRS}")message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}")include_directories(${OPENCV_INCLUDE_DIRS})add_e...
NO_DEFAULT_PATH:可选参数,用于禁用find_package命令的默认路径搜索。默认情况下,find_package命令会在一些预定义的路径中搜索库或框架。如果指定了该参数,find_package命令将只使用CMAKE_PREFIX_PATH和CMAKE_FRAMEWORK_PATH中指定的路径进行搜索。 find_package(MyLib NO_DEFAULT_PATH) 上述代码表示禁用find_package命...
find_package(CURLREQUIRED)include_directories(${CURL_INCLUDE_DIR})target_link_libraries(curltest ${CURL_LIBRARY}) 那么cmake是如何查找的呢? find_package()命令首先会在模块路径中寻找Find.cmake,这是查找库的一个典型方式。具体查找路径依次为CMake:变量${CMAKE_MODULE_PATH}中的所有目录。如果没有,然后...
1.CmakeFindPackage多种方式 问题引入:系统中存在多个版本的第三方库情况,怎么找到特定文件夹下的lib和头文件呢? 通常我们会使用find_package去找某个依赖的第三方库,比如如果存在多个版本的gflags,这样容易找错,引起编译问题。比如gflags是不同gcc版本编译的。
与find_libaray直接在指定搜索目录下搜索库不同,find_package命令可以获取更多的信息,那么它的搜索方式也是与find_libaray不一样,它有两种不同的搜索方式,因此在介绍这个命令的细节之前,先简单介绍一下find_package命令的两种搜索模式:模块模式(Module mode)和配置模式(Config mode)。
B.如果搜索模式是Config mode,CMake会搜索<lowercasePackageName>-config.cmake文件或<PackageName>Config.cmake文件。如果find_package命令中指定了具体的版本,也会搜索<lowercasePackageName>-config-version.cmake或<PackageName>ConfigVersion.cmake文件。 <prefix>/ (W) <prefix>/(cmake|CMake)/ (W) <prefix...
在cmake 的编译体系中,package 用来指代一个依赖库,包括一些头文件、动态库、静态库等等,在 CMakeFileLists.txt 中通过find_package()命令可以很轻易实现。 比如很多同学可能会用 OpenCV 进行图像开发,它是个非常有名的开源库,它有 10 来个库文件、几十个头文件,因此如何正确引用它就是一件值得小心翼翼的事情...
一、find_package 命令基本介绍 在实际开发工程中,经常不可避免会使用到第三方开源库,这些开源库可能是通过apt-get install 命令自动安装到系统目录中的;也有可能是由我们自己下载库的源码,然后通过编译安装到指令目录下。 不管哪种方式安装的库文件,如果我们需要在项目中使用这些库,首先面临的第一个问题,就是怎么找...