Cmake语句find_package()函数

背景

如果我们在cmake某个程序的时候,经常会提示找不到某个所依赖的库,那么这是时候我们就需要检查我们引入依赖库的路径对不对了, Cmake中一个自动寻找函数find_package()可以帮我们实现这个功能。

使用方法

//以slam十四讲中的joinMap程序Cmake文件为例:
cmake_minimum_required( VERSION 2.8 )
project( joinMap )

set( CMAKE_BUILD_TYPE Release )
set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )

# opencv 
find_package( OpenCV REQUIRED )
include_directories( ${
   
   OpenCV_INCLUDE_DIRS} )

# eigen 
include_directories( "/usr/include/eigen3/" )

# pcl 
find_package( PCL REQUIRED COMPONENT common io 
### 如何在CMake中正确使用 `find_package` 定位 nlohmann_json 库 #### 基本概念 `find_package` 是 CMake 提供的一个功能强大的命令,用于查找已安装的第三方库并将其集成到项目中。对于像 `nlohmann_json` 这样的现代库,通常会提供自己的 CMake 配置文件以便于集成。 以下是关于如何在 CMake 中正确使用 `find_package` 来定位 `nlohmann_json` 的详细说明: --- #### 正确配置方式 1. **确保环境准备妥当** 在使用 `find_package` 查找 `nlohmann_json` 之前,需确认该库已经通过某种方式进行安装或下载。常见的获取方式包括: - 手动下载源码并将其实现头文件路径加入项目的 include 路径。 - 使用包管理工具(如 vcpkg 或 conan)来安装此库[^4]。 2. **调用 `find_package`** 下面是一个典型的例子展示如何在 CMakeLists.txt 文件中引入 `nlohmann_json` 并链接它至目标程序: ```cmake cmake_minimum_required(VERSION 3.15) project(MyProject LANGUAGES CXX) # 寻找指定版本的 nlohmann_json 库 find_package(nlohmann_json 3.6.0 REQUIRED) add_executable(main main.cpp) # 将找到的 json 库链接到可执行文件上 target_link_libraries(main PRIVATE nlohmann_json::nlohmann_json) ``` 上述代码片段展示了标准流程:先定义最低所需的 CMake 版本号;接着声明项目名称及其使用的编程语言;随后利用 `find_package` 函数加载所需版本的 `nlohmann_json` 库,并最终把查找到的目标链接给实际构建出来的二进制文件[^1]。 3. **处理可能发生的错误情况** 如果运行过程中出现找不到对应库的情况,则可以尝试调整或者扩展默认搜索范围。例如增加额外目录作为候选位置之一: ```cmake list(APPEND CMAKE_PREFIX_PATH /path/to/custom/installation/directory) find_package(nlohmann_json 3.6.0 REQUIRED) ``` 另外需要注意的是某些特定场景下还需要设置其他变量比如 `NO_MODULE`, 当希望仅依赖模块模式而非脚本形式时可用如下写法替代常规调用语句: ```cmake find_package(nlohmann_json 3.6.0 MODULE REQUIRED) ``` 对比之下如果采用 CONFIG 方式则意味着期望对方提供了 Find*.cmake 文件或者是 Exported Target 形式的预设数据结构[^3]。 --- #### 注意事项 - 若选用 VCPKG 等跨平台解决方案分发依赖项的话,请记得激活其内部机制从而让这些组件能够被自动探测发现[^4]。 - 不同操作系统环境下具体操作细节可能会有所差异,务必参照官方文档核实兼容性和参数选项准确性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值