Ubuntu Ceres CMakeLists.txt寫法 \ cannot find -lceres解決方案

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})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章