Cmakelist檔案說明

2021-09-05 09:20:32 字數 1698 閱讀 1780

因為在ros編譯的過程中,需要使用cmakelist,記錄一下當中暫時需要了解的一些東西是什麼意思。

每個catkin cmakelists.txt檔案必須以需要的cmake版本開始。 catkin需要2.8.3或更高版本。

cmake_minimum_required(version 2.8.3)
乙個專案是由cmake專案功能指定的包的名稱。 例如專案名稱叫做opencv_test

project(opencv_test)
在cmake中,可以隨時在cmake指令碼中隨時使用變數$ 來引用專案名稱。

我們需要使用find_package函式指定需要找到哪些其他cmake包來構建我們的專案。 如果cmake通過find_package找到乙個包,則會導致建立幾個提供有關找到的包的資訊的cmake環境變數。 這些環境變數可以在cmake指令碼中稍後使用。 環境變數描述了包匯出的標頭檔案的位置,原始檔的位置,包所依賴的庫以及這些庫的路徑。簡單理解,就算用來找到你依賴的包。

find_package(catkin required components

cv_bridge

image_transport

roscpp

sensor_msgs

std_msgs

)find_package(opencv required)

在指定目標之前,您需要指定可以為所述目標找到資源的位置,特別是標頭檔案和庫,也就算說,這裡設定的是一些標頭檔案的路徑

include_directories(include $)

include_directories(include $)

用於設定需要編譯生成的**和可執行的檔案,格式為:

add_executable(myprogram src/main.cpp src/some_file.cpp src/another_file.cpp)
這將構建乙個名為myprogram的目標可執行檔案,它由3個原始檔構建:src / main.cpp,src / some_file.cpp和src / another_file.cpp。例如:

add_executable(opencv_test_node src/opencv_test_node.cpp)
用於設定鏈結庫,很多功能需要使用系統或者第三方的庫函式,通過該選項可以配置執行檔案鏈結的庫檔案。其第乙個引數和add_executable相同,是可執行檔案的名稱,後面依次列出需要鏈結的庫。例如

target_link_libraries(opencv_test_node $ $)
用於設定依賴項。就是說,在編譯的過程中,如果需要用到構建訊息/服務/操作的這類東西的話,需要用到這個函式。例如訊息型別在編譯的過程中會產生相應的**語言,如果編譯的可執行檔案依賴這些動態生成的**,則需要使用到add_dependencies函式。對於訊息型別,新增

add_dependencies(talker beginner_tutorials_generate_messages_cpp)
如果使用project_name代替的話,就是:

add_dependencies(talker _generate_messages_cpp)

CMakeList的基本寫法

最近需要自己寫cmakalist,所以簡要寫一下一些基本的操作。為圖實用,只寫了常用的簡單操作。1.確定cmake最低版本需求cmake minimum required version 3.0.0 2.確定工程名project 這個不是必須,但是最好寫一下,這一行會引入兩個變數 binary di...

Cmake使用筆記,Cmakelist編寫

project languages 將name存到project name,同時設定變數 include directories after before system dir1 dir2 指定標頭檔案的搜尋路徑,相當於指定gcc的 i引數 include directories hello 增加h...

CMakeList1 將原始檔編譯成可執行檔案

1.cmake版本要求,可以用cmake version檢視當前系統的cmake版本 cmake minimum required version 3.5 2.指示工程名稱 project recipe 01 3.編譯鏈結生成可執行檔案 add executable helloworld main....