由於ceres庫和eigen庫有一定的版本對應關係,因此很容易在編譯期間報錯。
報錯內容是:雖然找到了.cmake,但是版本不匹配,需要eigen3.2.92之類之類
之前通過Eigen的官網直接安裝了Eigen3.3.7(採用3.3版本是爲了和sophus所對應,教程)
但是Eigen3.3.7無法與ceres1.11.0對應(如果你是通過artographer安裝的ceres,那麼版本就爲1.11.0)
因此,爲了找到與Eigen3.3.7對應版本的ceres,可以直接在ceres官網上查找最新版本的ceres1.14.0進行安裝,當然,直接git可能會慢,因此先下載安裝包再進行安裝。
由於Eigen3.3.7是最新的eigen穩定版本,所以它與最新的ceres穩定版本1.14.0對應肯定沒有任何問題。
0.準備工作
- 刪除掉一些舊版本ceres的文件,否則直接安裝清理不掉,依然會報錯
①/usr/local/include中的ceres文件夾直接刪掉
②/usr/local/lib下的libceres.a
③/usr/local/lib/cmake/Ceres 下有關ceres的全都刪掉
④/usr/local/share/Ceres 文件夾刪掉
上面四點中,若是沒有的話就不必刪了
如果怕還有殘餘,則在終端:locate ceres
然後 locate Ceres
主要看usr底下還有沒有關於ceres的,若有,必殺之
- 安裝依賴庫
看ceres官網查看需要哪些依賴庫(安裝之前還是建議先locate一遍,看看是否已經安裝過)
下面進行安裝ceres1.14.0
1.下載ceres1.14.0壓縮包並安裝
-
下載鏈接:https://download.csdn.net/my(之後上傳,正在審覈中)
-
提取到此處,並進入文件夾,在終端打開
-
編譯安裝
mkdir build
cd build
cmake ..
make -j4
sudo make install
2.測試
CMakeLists.txt中:
(用的是slam十四講ch6中的curvefitting代碼)
# Ceres
find_package(Ceres REQUIRED)
include_directories(${CERES_INCLUDE_DIRS})
add_executable(ceresCurveFitting ceresCurveFitting.cpp)
target_link_libraries(ceresCurveFitting ${OpenCV_LIBS} ${CERES_LIBRARIES})
最終測試成功
3. 補充
如果依然報版本不匹配的錯誤,很有可能是準備工作中ceres的文件沒刪乾淨,記住那個CeresConfig.cmake文件一定要刪掉,可以用locate位置,也可以在kdevelop的報錯中雙擊點開文件。