高博說:不要長期徘徊在自己的舒適區里猶豫不決,這樣是沒有進步的。這句話開啟了我的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...