1. 程式人生 > >Ceres的CMakeLists.txt寫法 \ cannot find -lceres解決方案

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})