在CMake中,find_package 命令用于查找并加载指定的外部库或软件包。当CMake自带的模块或配置脚本无法找到某个库时,我们可以编写自定义的查找模块。以下是如何自定义 find_package 的详细步骤: 1. 理解 find_package 在CMake中的作用 find_package 是CMake的一个命令,用于查找和加载外部库。它会根据提供的包名和可...
本文主要介绍如何在 CMakeLists.txt 文件中配置 find_package(),让 find_package() 可以找到自定义安装位置的通用库(比如 OpenCV, Protobuf)。 在通常情况下, 使用cmake编译的时候不指定 -DCMAKE_INSTALL_PREFIX 参数, 那么在执行安装时, 会默认安装到/usr目录下。我们可以通过设置 -DCMAKE_INSTALL_PREFIX ...
find_package(GFlags REQUIRED) 这个时候可以通过PATHS指定某个目录去寻找,避免多个版本链接出错。 find_package(GFlags PATHS /workspace/xxx/gflags-2.2.2/out/lib/cmake/gflags REQUIRED NO_DEFAULT_PATH) 如果安装的第三方库使用源码编译安装,并且作者没有编写.cmake文件供find_package使用。这时可以使用file GLOB去...
要想自定义 find_package , 我们首先要了解 cmake 中 find_package 的运行方式. cmake 中的 find_package 其实最终会调用 cmake 中的一个 FindXXX.cmake 的脚本. 如果调用用了 find_package(ABC) , 那么最终就会在 cmake 中找到 FindABC.cmake 并运行, 最终也是 FindABC.cmake 来实现 ABC 这个库的查找...
利用cmake的find_package()函数进行CONFIG模式调用时,其会结合安装生成的cmake文件,进行模块的查找。该操作的详细过程,可以参考文章:无我:CMake install 参考地址: CMake part 3: create a config file to be found by find_package()总之,在自定义模块开发中,通过灵活应用CMake的MODULE和C...
find_library 一般直接去查找依赖库文件,和find_package 不一样,find_package 找的是 .cmake 文件,而find_library 直接找 .so 或者 .a 文件。 和find_path 一样,命令的执行结果会默认缓存到 CMakeCache.txt 中。 (1) 格式 相关选项解析可以参考 find_path ...
# 将项目目录下的cmake文件夹加入到CMAKE_MODULE_PATH中,让find_pakcage能够找到我们自定义的函数库set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}")add_executable(addtest addtest.cc)find_package(ADD)if(ADD_FOUND)target_include_directories(addtest PRIVATE ${ADD_INCLUDE_...
package 在cmake 的编译体系中,package 用来指代一个依赖库,包括一些头文件、动态库、静态库等等,在 CMakeFileLists.txt 中通过find_package()命令可以很轻易实现。 比如很多同学可能会用 OpenCV 进行图像开发,它是个非常有名的开源库,它有 10 来个库文件、几十个头文件,因此如何正确引用它就是一件值得小心翼翼...
安装库时,应确保遵循此布局以方便其他人查找和使用。以下以安装自定义的数学静态库为例,库的结构分为两个主要部分:make_lib文件夹负责生成库文件并安装,use_lib文件夹则用于使用find_package()命令调用自定义的数学包。库的核心功能定义在math.hpp中,包含加法和减法函数,而main.cpp文件则使用这些...