==> Processing catkin package: 'li_calib' ==> Creating build directory: 'build_isolated/li_calib' ==> Building with env: '/home/ob/lio_ws/devel_isolated/ndt_omp/env.sh' ==> cmake /home/ob/lio_ws/src/thirdp/lidar_imu_calib -DCATKIN_DEVEL_PREFIX=/home/ob/lio_ws/devel_isolated/li_calib -DCMAKE_INSTALL_PREFIX=/home/ob/lio_ws/install_isolated -G Unix Makefiles in '/home/ob/lio_ws/build_isolated/li_calib' -- The C compiler identification is GNU 9.4.0 -- The CXX compiler identification is GNU 9.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found OpenMP_C: -fopenmp (found version "4.5") -- Found OpenMP_CXX: -fopenmp (found version "4.5") -- Found OpenMP: TRUE (found version "4.5") -- Using CATKIN_DEVEL_PREFIX: /home/ob/lio_ws/devel_isolated/li_calib -- Using CMAKE_PREFIX_PATH: /home/ob/lio_ws/devel_isolated/ndt_omp;/home/ob/lio_ws/devel_isolated/map_server;/home/ob/lio_ws/devel_isolated/lite3_description;/home/ob/lio_ws/devel_isolated/imu_utils;/home/ob/lio_ws/devel_isolated/faster_lio;/home/ob/lio_ws/devel_isolated/code_utils;/opt/ros/noetic -- This workspace overlays: /home/ob/lio_ws/devel_isolated/ndt_omp;/home/ob/lio_ws/devel_isolated/map_server;/home/ob/lio_ws/devel_isolated/lite3_description;/home/ob/lio_ws/devel_isolated/imu_utils;/home/ob/lio_ws/devel_isolated/faster_lio;/home/ob/lio_ws/devel_isolated/code_utils;/opt/ros/noetic -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.10", minimum required is "3") -- Using PYTHON_EXECUTABLE: /usr/bin/python3 -- Using Debian Python package layout -- Found PY_em: /usr/lib/python3/dist-packages/em.py -- Using empy: /usr/lib/python3/dist-packages/em.py -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/ob/lio_ws/build_isolated/li_calib/test_results -- Forcing gtest/gmock from source, though one was otherwise available. -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") -- Found Threads: TRUE -- Using Python nosetests: /usr/bin/nosetests3 -- catkin 0.8.10 -- BUILD_SHARED_LIBS is on -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: system filesystem thread date_time CMake Error at CMakeLists.txt:31 (find_package): By not providing "FindPangolin.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Pangolin", but CMake did not find one. Could not find a package configuration file provided by "Pangolin" with any of the following names: PangolinConfig.cmake pangolin-config.cmake Add the installation prefix of "Pangolin" to CMAKE_PREFIX_PATH or set "Pangolin_DIR" to a directory containing one of the above files. If "Pangolin" provides a separate development package or SDK, be sure it has been installed. -- Configuring
时间: 2025-07-09 18:55:46 浏览: 3
<think>好,我现在要处理用户提供的这个CMake错误。首先,我需要仔细看看错误信息的内容。错误发生在CMakeLists.txt的第31行,提示找不到Pangolin的包配置文件。用户可能在编译一个ROS包,名为li_calib,属于lidar_imu_calib项目。错误信息里提到CMake无法找到Pangolin的配置文件,可能是Pangolin没有正确安装或者环境变量没设置好。
首先,我需要确定Pangolin是什么。Pangolin是一个用于3D视觉和传感器数据可视化的库,常用于SLAM相关的项目。如果项目依赖它,那系统中必须安装它。用户可能没有安装Pangolin,或者安装的路径没有被CMake识别到。
接下来,我应该考虑如何解决这个问题。通常,解决这种找不到包的问题有几个步骤:
1. **确认Pangolin是否已安装**:用户可能没有安装Pangolin,或者安装方式不正确。如果是通过apt安装,可能需要安装特定的开发包,比如libpangolin-dev。但有时候,可能需要从源码编译安装,尤其是当项目需要较新版本时。
2. **检查安装路径是否在CMAKE_PREFIX_PATH中**:CMake查找包的路径包括CMAKE_PREFIX_PATH。用户提供的输出中显示CMAKE_PREFIX_PATH包括了一些ROS的devel目录和/opt/ros/noetic,但可能没有包含Pangolin的安装路径。如果用户从源码安装Pangolin,默认可能安装在/usr/local,但有时可能需要手动添加路径。
3. **设置Pangolin_DIR环境变量**:如果Pangolin的配置文件不在标准路径下,用户可能需要设置Pangolin_DIR变量指向包含配置文件的目录。例如,如果Pangolin安装在/usr/local/lib/cmake/Pangolin,那么设置这个变量为该路径。
4. **重新编译并安装Pangolin**:如果之前安装有问题,可能需要重新编译安装,并确保安装过程中没有错误,同时生成正确的CMake配置文件。
现在,我需要将这些步骤转化为具体的解决方案。可能需要用户先尝试安装Pangolin,如果已经安装过,但CMake找不到,可能需要检查安装路径是否正确,或者手动指定路径。
另外,考虑到用户是在使用catkin_make_isolated来构建ROS包,可能需要确保Pangolin被正确安装在系统的CMake路径中,或者通过catkin工作空间来管理依赖。但Pangolin可能并不是一个ROS包,所以需要单独安装。
用户可能需要执行以下步骤:
- 安装Pangolin的依赖项,比如GLEW、CMake、Git等。
- 从GitHub克隆Pangolin的仓库。
- 编译并安装Pangolin到系统目录,或者本地目录,并确保CMake能够找到它。
如果用户已经安装了Pangolin但CMake仍然找不到,可能需要手动设置CMAKE_PREFIX_PATH或在CMake命令中指定Pangolin_DIR。例如,在catkin build时添加-DPangolin_DIR=/path/to/pangolin/config。
此外,还需要注意Pangolin的版本是否与项目要求的兼容。可能需要特定版本的Pangolin,用户需要根据项目的文档确认。
总结来说,解决方案的核心是确保Pangolin正确安装,并且CMake能够找到其配置文件。需要指导用户完成这些步骤,并处理可能的路径问题。</think>以下是针对编译错误的分析和解决方案分步说明:
---
### **错误分析**
编译日志显示关键错误:
```cmake
CMake Error at CMakeLists.txt:31 (find_package):
Could not find a package configuration file provided by "Pangolin"
```
**原因**:当前系统缺少`Pangolin`库,或CMake未找到其安装路径。
---
### **解决方案**
#### **步骤1:安装Pangolin依赖**
```bash
sudo apt-get install -y libgl1-mesa-dev libglew-dev cmake libpython2.7-dev
```
#### **步骤2:从源码编译安装Pangolin**
```bash
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install # 默认安装到/usr/local
```
#### **步骤3(可选):验证安装路径**
检查Pangolin配置文件是否存在:
```bash
ls /usr/local/lib/cmake/Pangolin/PangolinConfig.cmake
```
若文件存在则表示安装成功。
#### **步骤4:重新编译您的ROS包**
回到ROS工作目录,重新执行编译命令:
```bash
cd ~/lio_ws
catkin_make_isolated --pkg li_calib # 或使用完整编译命令
```
---
### **附加说明**
1. **自定义安装路径**:
若将Pangolin安装到非标准路径(如`/opt/pangolin`),需在CMake中显式指定路径:
```bash
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/pangolin
```
然后在编译ROS包时添加路径:
```bash
catkin_make_isolated --pkg li_calib -DPangolin_DIR=/opt/pangolin/lib/cmake/Pangolin
```
2. **版本兼容性**:
若项目依赖特定版本Pangolin,请通过Git切换分支:
```bash
git checkout v0.6 # 以0.6版本为例
```
---
### **技术原理**
- **CMake查找机制**:
CMake通过`find_package()`在`CMAKE_PREFIX_PATH`路径中搜索`<Package>Config.cmake`文件。Pangolin的标准安装路径`/usr/local`已在默认搜索范围内,因此通常无需额外配置。
- **ROS编译隔离**:
`catkin_make_isolated`会为每个包创建独立编译环境,确保依赖隔离。若依赖未正确安装,隔离机制会放大路径查找问题。
阅读全文
相关推荐



















