Ceres的CMakeLists.txt寫法 \ cannot find -lceres解決方案
阿新 • • 發佈:2018-12-09
目錄
1、編譯安裝Ceres
下載最新的原始碼:http://ceres-solver.org/ceres-solver-1.14.0.tar.gz
安裝依賴:
sudo apt-get install cmake libgoogle-glog-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev libtbb-dev
解壓ceres-solver-1.14.0.tar.gz,進入解壓後的資料夾,開啟終端輸入命令:
mkdir release && cd release
# 執行cmake命令
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/ceres ..
# 編譯
make -j 6
# 安裝
sudo make install
CMAKE_INSTALL_PREFIX指定了ceres的安裝路徑,6是CPU核心數。
參考網址:http://www.ceres-solver.org/installation.html#linux
2、CMakeLists.txt寫法
在這裡真的弄了好久,直接給出模板吧。
cmake_minimum_required(VERSION 3.12) project(Ceres-test) # 定義自己編譯的Ceres的庫目錄 set(Ceres_LIBS_DIR /usr/local/ceres/lib) # 定義CeresConfig.cmake所在檔案目錄 set(Ceres_DIR ${Ceres_LIBS_DIR}/cmake/Ceres) # 找Ceres庫 find_package(Ceres REQUIRED) message(STATUS "Found Ceres: ${CERES_FOUND}") message(STATUS " Ceres Include Dirs: ${CERES_INCLUDE_DIRS}") message(STATUS " Ceres Libs: ${CERES_LIBRARIES}") # 新增包含目錄 include_directories(${CERES_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} main.cpp) # 定義需要的庫 # ${CERES_LIBRARIES}只有一項ceres,後面很多庫都沒有。。。所以需要自己定義需要連結那些庫。 set(LIBS ${Ceres_LIBS_DIR}/libceres.a umfpack cxsparse glog gflags gomp ccolamd btf klu cholmod lapack blas camd amd pthread) target_link_libraries(${PROJECT_NAME} ${LIBS})