在编译laser_scan_matcher相关软件包,出现CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415

本文介绍在编译laser_scan_matcher软件包时遇到CMake错误的详细解决过程。通过分析错误信息并查找CmakeList.txt文件,确定了缺失csm软件包的问题所在,并提供了具体的安装指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编译laser_scan_matcher相关软件包,出现CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415

报错信息

出现错误的缘由:
1)先下载src code 到你已经建立好的ros workspace 的 src 目录下:
2)通过以下命令时:

cd catkin_ws/src

git clone https://github.com/ccny-ros-pkg/scan_tools.git

cd ..

catkin_make // 会发现 fail, 此时进入到scan_tools/ 目录下把除laser_scan_matcher 目录之外的所有文件(夹)都删掉。

catkin_make //  此时又报错,如:CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:415

source devel/setup.bash

分析错误原因

错误信息:
在这里插入图片描述错误中并没有提示缺失的依赖软件包名称,因此需要定位到出错软件包的CmakeList.txt中查询,比如上述错误发生在laser_scan_matcher软件包中,打开相关CmakeList.txt可以发现:
在这里插入图片描述

pkg_check_modules(csm REQUIRED csm)

解决方案

故此,缺失csm软件包,我使用的是ros melodic版本,故安装方法可以是

sudo apt-get install ros-melodic-csm
<think>好的,用户遇到了CMakeFindPkgConfig.cmake脚本找不到所需包的问题,具体是CMake 3.10版本。我需要先理解这个问题出现的原因。FindPkgConfigCMake用来通过pkg-config工具查找依赖包的一个模块。当出现找不到包的情况,可能有几个原因:pkg-config本身未安装,相关开发包未正确安装,环境变量设置问题,或者CMake版本过旧导致兼容性问题。 首先,用户需要确认系统是否安装了pkg-config工具。可以通过终端输入pkg-config --version来检查。如果未安装,需要指导用户安装,比如在Ubuntu下使用sudo apt-get install pkg-config命令。接着,确认所需的库的开发包是否安装,比如要找的库是OpenSSL,可能需要安装libssl-dev。 然后,检查环境变量PKG_CONFIG_PATH是否正确设置。这个变量告诉pkg-config去哪里查找.pc文件。用户可能需要添加路径,例如export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH。如果路径不正确,CMake就无法找到对应的包。 另外,用户使用的是CMake 3.10,这个版本相对较旧,可能存在一些已知的问题或对某些库的支持不足。建议用户升级到更新的版本,比如从官网下载最新版或通过包管理器升级。例如,在Ubuntu上可以使用第三方PPA来安装更新的CMake版本。 如果升级CMake不可行,可以尝试手动指定包的路径。在CMakeLists.txt中使用pkg_search_module命令时,指定PATHS参数,或者直接用find_library和find_path来手动查找库和头文件。这样可以绕过FindPkgConfig的一些自动检测问题。 还需要查看错误信息的具体内容,确认是哪个包没有被找到。有时候错误信息会提示缺失的库名称,用户需要确保该库的开发版本已安装。例如,对于libgtk-3,可能需要安装libgtk-3-dev。 最后,参考用户提供的引用[1],CMake本身是跨平台的编译工具,能够生成不同的项目文件,但依赖正确的配置和环境设置。确保所有依赖项正确安装和配置是解决问题的关键。 总结解决方案步骤:检查pkg-config安装,确认开发包存在,设置正确的环境变量,升级CMake版本,手动指定库路径,以及根据错误信息调整查找方式。需要将这些步骤以清晰的结构呈现给用户,并提供具体的命令和配置示例,帮助用户逐步排查和解决问题。</think>### 解决CMake 3.10中`FindPkgConfig.cmake`找不到包的问题 #### 1. 确认`pkg-config`工具已安装 `FindPkgConfig`模块依赖系统的`pkg-config`工具来查找包。若未安装,执行以下命令: ```bash # Ubuntu/Debian sudo apt-get install pkg-config # CentOS/RHEL sudo yum install pkgconfig ``` #### 2. 检查目标开发包是否安装 确保所需库的**开发版本**已安装(例如`libssl-dev`而非`libssl`): ```bash # 示例:安装OpenSSL开发包 sudo apt-get install libssl-dev ``` #### 3. 设置`PKG_CONFIG_PATH`环境变量 若库安装在非标准路径(如`/usr/local/lib`),需设置路径: ```bash export PKG_CONFIG_PATH=/your/custom/path/pkgconfig:$PKG_CONFIG_PATH ``` 在CMake中也可直接指定: ```cmake set(ENV{PKG_CONFIG_PATH} "/your/custom/path/pkgconfig:$ENV{PKG_CONFIG_PATH}") ``` #### 4. 升级CMake版本 CMake 3.10(2017年发布)可能存在兼容性问题。建议升级至**3.18+**: ```bash # 从官网下载预编译版本解压即可 wget https://cmake.org/files/v3.18/cmake-3.18.1-Linux-x86_64.tar.gz tar zxvf cmake-3.18.1-Linux-x86_64.tar.gz export PATH=$PATH:/path/to/cmake-3.18.1-Linux-x86_64/bin ``` #### 5. 手动指定包路径 在`CMakeLists.txt`中显式声明路径: ```cmake find_package(PkgConfig REQUIRED) pkg_search_module(MY_PKG REQUIRED my-package PATHS "/your/custom/path" # 添加自定义搜索路径 ) if(NOT MY_PKG_FOUND) message(FATAL_ERROR "my-package not found") endif() ``` #### 6. 验证`.pc`文件存在性 通过`pkg-config`手动检查目标包的元数据文件: ```bash pkg-config --exists my-package # 返回0表示存在 pkg-config --modversion my-package # 查看版本 pkg-config --libs my-package # 查看链接参数 ``` #### 7. 错误排查示例 若报错`Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)`,说明`pkg-config`未安装或未在PATH中[^1]。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值