最近安装ds-slam,运行时会报错,GitHub中提到使用3.2版本的eigen3会解决此问题,因此需换用低版本的eigen3
网上的方法多是采用源代码安装,然后在使用的时候切换.qc文件路径,或者将需要的文件放到usr/include中。感觉这些方法过于麻烦,并且在后期维护的时候容易遗忘,因此采用其他方法解决这个问题。
查阅资料+编译尝试可知:1、eigen3是一个用头文件搭起来的库,只要能检索到头文件就可以了。
2、对eigen3 make install 的时候,发现会在/usr/local/lib/pkgconfig下生成一个.pc文件,这个pc文件影响全局eigen3的版本检索
3、程序编译的时候,往往会跟一个FindEigen3.cmake文件
基于以上信息,对文件进行改动。更换eigen3的命名防止同命名不同内容的文件
========================================
1、下载需要版本的源代码 https://gitlab.com/libeigen/eigen
2、cmake 时更改install地址, make make install
3、到/usr/local/lib/pkgconfig 删除对应pc文件
4、建立对应findeigen3文件,我下载的是3.2.2,就建立了一个FindEigen322.cmake文件
a) 对于需要引用eigen的程序,将其cmakelists.txt 前面加一行 LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
后面改:
set(EIGEN322_INCLUDE_DIR "/home/smz/softwaves/site-pkgs/eigen-3.2.2/install/include/eigen3")
find_package(Eigen322 REQUIRED)
include_directories(...
${EIGEN322_INCLUDE_DIR}
...)
target_link_libraries(...
${EIGEN322_LIBS}
...)
b)新建cmake_modules/FindEigen322.cmake文件
内容copy eigen-3.2.2/cmake (源代码自带)
c)修改内容cmake_modules/FindEigen322.cmake
EIGEN3_INCLUDE_DIR 改为 EIGEN322_INCLUDE_DIR
编译即可。