cmakelists文件整體架構
所需CMake版本(cmake_minimum_required)
軟件包名稱(project())
查找構建所需的其他CMake / Catkin軟件包(find_package())
啓用Python模塊支持(catkin_python_setup())
消息/服務/動作生成器(add_message_files(),add_service_files(),add_action_files())
調用消息/服務/動作生成(generate_messages())
指定package build info export(catkin_package())
要建立的庫/可執行文件(add_library()/ add_executable()/ target_link_libraries())
測試建立(catkin_add_gtest())
安裝規則(install())
- 注:CMakeLists.txt文件
必須遵循此格式且按照配置的順序進行
,否則您的包將無法正確構建。
分塊講解
1.CMake版本
cmake_minimum_required(VERSION 2.8.3)
- 每個catkin CMakeLists.txt文件必須以需要的CMake版本開始。 Catkin需要2.8.3或更高版本。
2.軟件包名稱
project(robot_brain)
- 所使用的項目名是由CMake項目功能指定的包的名稱
3.查找相關的CMake包
find_package(catkin REQUIRED)
- 需要使用CMake的find_package()函數指定需要找到哪些其他CMake包來構建我們的項目
- 但是至少有一個依賴於catkin:
- 若所需多個依賴包:
find_package(catkin REQUIRED)
find_package(roscpp REQUIRED)
find_package(rospy REQUIRED)
find_package(std_msgs REQUIRED)
也可以寫成:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
)
- 如果要使用 C++ 和Boost,則需要引用 find_package 包含 Boost,並且指明 Boost 的類型,如使用 Boost threads,則:
find_package(Boost REQUIRED COMPONENTS thread)
4.消息/服務/動作生成器
find_package(catkin REQUIRED COMPONENTS ...)
add_message_files(...)
add_service_files(...)
add_action_files(...)
generate_messages(...)
catkin_package(...)
...