Ceres學習筆記之CMakeLists寫法總結

2021-08-28 05:37:35 字數 1426 閱讀 3236

高博說:不要長期徘徊在自己的舒適區里猶豫不決,這樣是沒有進步的。這句話開啟了我的slam後端優化學習之路。本文從cmakelists開始,總結常用的各個庫在cmakelists中的寫法。

眾人:哇!又是這麼小兒科的嗎?

博主:哎呀~~不要這樣講嘛~~~(qwq我會一直努力的)

通常的cmakelists結構是:

cmake_minimum_required( version 2.8 )

project( projectname )

find_packages( , )

include_directories( )

add_executable( , )

target_link_libraries( , )

前兩行不談,看看find_packages

對於opencv我們是這樣寫的:

find_package( opencv 3.1 required )

find_package( opencv required ) #opencv2

對於g2o

find_package( g2o required )

而對於ceres就很自然是這樣了

find_package( ceres required)

總結:大部分庫按find_package(庫名 required)寫find_package

對於opencv我們是這樣寫的:

include_directories( $ )

對於g2o:

include_directories($)

對於csparse:

include_directories( $ )

eigen:

include_directories( "/usr/include/eigen3/")

那麼ceres:

include_directories( $)

這裡博主以為是dir還是dirs是看庫的情況而定的,但上面幾個庫我把s去掉了似乎也沒有什麼異常。那麼保險起見還是添上s吧。看這個問答:include_dir or include_dirs?

總結:include_directories($)

庫鏈結部分見乙個例子:

target_link_libraries( 可執行檔名 $ g2o_core g2o_stuff g2o_types_sba g2o_csparse_extension $ $)

有這幾種寫法:

ceres的學習筆記

剛剛在專案中使用的到了ceres,從完全不了解 到安裝使用解決問題,花費了整整乙個周的時間。所以使用的時候過程中踩了不少的坑,所以特別想記錄下來。ceres solver 是谷歌開發的一款用於非線性優化的庫,在谷歌的開源雷射雷達slam專案cartographer中被大量使用。ceres的官網比較詳...

CMake學習筆記

cmake是乙個跨平台的安裝編譯工具,能夠生成各種各樣的makefile或者project檔案。cmake並不直接構建出最終的軟體,而是產生標準的構建檔案 即工程檔案,如unix下的makefile或windows下的c project檔案 然後構建者就可以使用平台的ide環境進行常規構建了。在wi...

CMAKE學習筆記

方法1 cmake中有兩個變數用於指定輸出檔案的位置,通過設定這兩個變數executable output path和library output path的值指定exe檔案和lib檔案放置的目錄,如 set executable output path set library output pat...