PCL1.9的PCLConfig.cmake文件找不到eigen等外部依赖
PCL1.9的PCLConfig.cmake文件找不到eigen等外部依赖
由于需要用到PCL中on_nurbs模块做拟合,但是ros自带的pcl中没有该模块。所以源码安装了PCL 1.9,但是在使用过程中遇到了如下问题。
1. 安装过程
1.安装如下依赖项
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
#sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev //会卸载ros安装的部分软件包
#sudo apt-get install libqhull* libgtest-dev//安装不了,改成下一句命令
sudo apt-get install libgtest-dev libqhull-dev libqhull-doc
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
但是在安装vtk5.10库文件的时候会删除ros中的相关文件,所以跳过了该命令。
下载PCL源代码
git clone https://github.com/PointCloudLibrary/pcl.git
下载过程更换成手机热点,从而达到高速下载速度。
3、编译安装
ls
cd pcl
mkdir release
cd release cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr ..
make -j8
sudo make install
4、如果需要PCLVisualizer,安装OpenNI、OpenNI2
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev
2. PCLConfig.cmake文件找不到eigen等外部依赖
在将PCL成功编译安装之后,在项目的CMakeLists.txt中文件中添加如下语句,用于添加PCL相关库文件:
set(PCL_DIR /home/Andy/my_workspace/pcl-master/release)
find_package(PCL REQUIRED COMPONENTS)
find_package(Eigen3 REQUIRED)
list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4")include_directories( ${PCL_INCLUDE_DIRS} )
link_directories(${PCL_LIBRARY_DIRS})
add_definitions( ${PCL_DEFINITIONS} )
但是在 cmake的过程中会提示出现如下问题:
By not providing "FindEigen.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "Eigen", butCMake did not find one.Could not find a package configuration file provided by "Eigen" (requestedversion 3.1) with any of the following names:EigenConfig.cmakeeigen-config.cmakeAdd the installation prefix of "Eigen" to CMAKE_PREFIX_PATH or set"Eigen_DIR" to a directory containing one of the above files. If "Eigen"provides a separate development package or SDK, be sure it has beeninstalled.
Call Stack (most recent call first):/home/Andy/my_workspace/pcl-master/release/PCLConfig.cmake:314 (find_eigen)/home/Andy/my_workspace/pcl-master/release/PCLConfig.cmake:547 (find_external_library)CMakeLists.txt:32 (find_package)CMake Error at /home/Andy/my_workspace/pcl-master/release/PCLConfig.cmake:60 (message):common is required but eigen was not found
Call Stack (most recent call first):/home/Andy/my_workspace/pcl-master/release/PCLConfig.cmake:365 (pcl_report_not_found)/home/Andy/my_workspace/pcl-master/release/PCLConfig.cmake:547 (find_external_library)CMakeLists.txt:32 (find_package)-- Configuring incomplete, errors occurred!
See also "/home/Andy/my_workspace/Code/Clion_code/PCL_example/PCL_Curve_Fitting/build/CMakeFiles/CMakeOutput.log".
See also "/home/Andy/my_workspace/Code/Clion_code/PCL_example/PCL_Curve_Fitting/build/CMakeFiles/CMakeError.log".
产生这个问题的原因在于PCLConfig.cmake文件找不到eigen依赖。
可以将PCLConfig.cmake文件中的find_eigen函数改为如下形式:
macro(find_eigen)if(PCL_ALL_IN_ONE_INSTALLER)set(EIGEN_ROOT "${PCL_ROOT}/3rdParty/Eigen")elseif(NOT EIGEN_ROOT)get_filename_component(EIGEN_ROOT "/usr/include/eigen3" ABSOLUTE)endif(PCL_ALL_IN_ONE_INSTALLER)if(PKG_CONFIG_FOUND)pkg_check_modules(PC_EIGEN eigen3)endif(PKG_CONFIG_FOUND)find_path(EIGEN_INCLUDE_DIRS Eigen/CoreHINTS ${PC_EIGEN_INCLUDEDIR} ${PC_EIGEN_INCLUDE_DIRS} "${EIGEN_ROOT}" "$ENV{EIGEN_ROOT}"PATHS "$ENV{PROGRAMFILES}/Eigen 3.0.0" "$ENV{PROGRAMW6432}/Eigen 3.0.0""$ENV{PROGRAMFILES}/Eigen" "$ENV{PROGRAMW6432}/Eigen" PATH_SUFFIXES eigen3 include/eigen3 include)find_package_handle_standard_args(eigen DEFAULT_MSG EIGEN_INCLUDE_DIRS)set(EIGEN_DEFINITIONS ${EIGEN_DEFINITIONS} -DEIGEN_USE_NEW_STDVECTOR -DEIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET)
endmacro()
修改之后,重新编译还有报错,提示找不到OpenNIConfig.cmake。同理需要将PCLConfig.cmake文件中相应的函数进行修改。
改完之后,将成功编译。
完整的PCLConfig.cmake我以上传。可以直接下载,替换掉原来的PCLConfig.cmake文件。
PCLConfig.cmake
PCL1.9的PCLConfig.cmake文件找不到eigen等外部依赖相关推荐
- cmake使用教程(四)调用外部共享库和头文件
文件组织形式: 创建根目录test1,在根目录下创建CMakeLists.txt文件和src文件夹,在src/目录下创建CMakeLists.txt和main.cpp,其中根目录下面的CMakeLis ...
- 添加msg文件找不到目录add_message_files() directory not found:
问题描述: ROS在修改完xml和cmakelists文件后编译,出添加msg文件找不到目录的情况 CMake Error at /opt/ros/melodic/share/genmsg/cmak ...
- 以为是 unable to start correctly (0xc0000142) 实际上却是 gfluidimgproc_func.simd.hpp文件找不到的解决方法(含opencv编译使用)
起因 注意,下面的内容都是win10情况下发生的 在某些时候,我们从比较新的电脑上用vs,编译使用了比较新的opencv4.X库的运行程序,并且打算放到比较旧的电脑上使用时 会发现在动态链接库都是完整 ...
- 006 - CMake 安装动态库并生成 XxxConfig.cmake 文件
CMake 安装动态库并生成 XxxConfig.cmake 文件 文章目录 CMake 安装动态库并生成 XxxConfig.cmake 文件 引言 展示 简单解释CMakeLists.txt se ...
- VScode配置CMAKE文件
创建一个vscode文件 记得一定要创建一个build文件夹,因为cmake编译过程中产生的中间文件会放到build文件夹中. 打开VScode 配置文件 launch.json {"ver ...
- Ubuntu下通过CMake文件编译CUDA+OpenCV代码操作步骤
在 CUDA_Test 工程中,CUDA测试代码之前仅支持在Windows10 + VS2013编译,今天在Ubuntu 14.04下写了一个CMakeLists.txt文件,支持在Linux下也可 ...
- matlab-xlsread无法打开文件找不到文件
前几天用matlab处理数据,遇到"xlsread无法打开文件找不到文件"这样一个问题,后来发现是文件路径太长了,导致出现这样的问题,把文件发到根目录后缩短了文件路径,问题就解决了 ...
- 编译过程中,termcap.h 文件找不到路径 licli.a终于生成
编译过程中,termcap.h 文件找不到路径 查看是linux 源码下找不到termcap.h文件 安装了所有关于*cap*的源码包也不起作用 今天终于解决了这个问题,搜termca ...
- cmake 指定编译器_我们需要懂得CMake文件
我们需要懂得CMake文件 一.前言 从事于linux下的C++开发的人员都知道,在C++下编写程序是没有类似windows下编译器的一键编译和运行的按钮,只能由我们开发人员进行手动编译.运行:为了减 ...
最新文章
- R语言数据包自带数据集之ISwR包的melanom数据集字段解释、数据导入实战
- 程序员眼中的电脑和空调 | 每日趣闻
- 广告域名审核之后跳转技术:点击域名A页面iframe框架下的链接,域名A跳转到域名B...
- elasticsearch导入数据的几种方法
- 平安数据中心高可用运维白皮书
- python post请求_python发送http的post请求
- linux同步IO: sync、fsync与fdatasync
- 募捐名单_年度捐款,以及为什么现在应该捐款,而不是以后
- 使用Context和Hooks来管理状态
- Android 字母导航条实现
- hdmi中深度色彩像素打包
- 太极熊猫3服务器维护中,太极熊猫3月10日维护公告_瑞兽稀有技修改_蚕豆网新闻...
- sinx/x在0到+∞的积分
- 多媒体计算机辅助英语教学,浅谈多媒体计算机辅助英语教学
- 微信小程序实现随机标签云
- 职业玩家手速测试软件,游戏界手速最快的人,APM近千,Faker都自愧不如
- Qt基于networkmanager嵌入式linux的wifi网络连接
- python list diff_Python List交集,并集,差集的应用
- 账号和权限管理(一)
- (侯捷C++)1.1面向对象高级编程(上)
热门文章
- 使用JS/Jquery获得父窗口的几个方法(笔记)
- Mysql,SqlServer,Oracle主键自动增长的设置
- SpringBoot (二) :全局异常处理设置
- python路径拼接os.path.join()函数的用法
- 天元MegEngine训练推理
- NVIDIA CUDA-X AI
- BEP 7:CUDA外部内存管理插件(下)
- YOLOvi(i=1,2,3,4)系列
- C++ 中multiset 的使用
- [codeforces]Round #538 (Div. 2) F. Please, another Queries on Array?