日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

PCL1.9的PCLConfig.cmake文件找不到eigen等外部依赖

發布時間:2023/11/27 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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等外部依赖的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。