1. 源码中采用了C++17标准,而我的版本较低,所以作如下修改:
- 将CMakeLists.txt中的
set(CMAKE_CXX_STANDARD 17)
替换为set(CMAKE_CXX_STANDARD 11)
- 将
std::optional
替换为boost::optional
- 将
std::nullopt
替换为boost::none
- 将
std::make_unique<T>(...)
替换为std::unique_ptr<T>(new T(...))
2. GTSAM自带的Eigen和系统中原有的Eigen冲突
GTSAM版本为4.0.3
原因: GTSAM编译的时候默认使用了自带的Eigen,而系统中如果还手动安装过一个Eigen的话,就会出现两个Eigen的冲突。
解决方案:
- 重新编译GTSAM
- 使用cmake-gui,更改配置:将
GTSAM_USE_SYSTEM_EIGEN
设置为ON
- 或在CMakeLists.txt中添加
set(GTSAM_USE_SYSTEM_EIGEN ON)
(可参考https://blog.csdn.net/cyx610481953/article/details/115000686)