探討ros下的cmakelists文件的編寫

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(...)
 ...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章