日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用于创建此对象的程序是package_【ROS 学习笔记】CMakeLists.txt 与 package.xml

發布時間:2025/3/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用于创建此对象的程序是package_【ROS 学习笔记】CMakeLists.txt 与 package.xml 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0. 前言

在 ROS 中,節點的編寫語言通常只有 C++ 和 Python,C++ 需要編譯后才能運行,Python 則無需編譯。

我們知道 Linux 平臺編譯 C++ 文件,需要編譯器和鏈接器,其中編譯器是將源代碼編譯成目標代碼,鏈接器是將目標代碼鏈接到可執行文件。若是編譯單個文件,用 g++ 即可;若是編譯一個 C++ 工程,則需要批處理編譯工具,如 make,通過設定規則文件 makefile 調用 g++ 等編譯工具進行批量編譯。但 makefile 的編寫十分復雜,便誕生了 CMake,通過編寫簡單的 CMakeLists.txt 規則文件,就能自動生成 makefile 文件,并且 CMake 是跨平臺的,十分強大。可參考之前的博客:

Linux 編譯工具 gcc/g++、Make/Makefile、CMake/CMakeLists.txt、qmake?www.cnblogs.com

ROS 的編譯器便是 CMake,為了更加人性化,ROS 在 CMake 基礎上封裝了 catkin 命令,用 cmake 命令創建功能包時,會自動生成 CMakeList.txt 文件,已配置了多數編譯選項,且包含詳細的注釋,只需稍作修改便可編譯自己的文件。

而 package.xml 文件是描述功能包清單的文件,包括功能包的名稱、版本號、作者信息、許可信息、編譯依賴和運行依賴等。

我們在用 catkin_create_pkg 命令創建功能包時,是會自動生成 CMakeLists.txt 和 package.xml 文件的。

舉例:

# 創建工作空間 mkdir -p ~/catkin_ws/src

下面看下 CMakeLists.txt 文件和 package.xml 文件各有哪些內容,需要自己改動哪些地方。

1. CMakeLists.txt 文件

常用的編譯配置項如下:

(1)include_directories

  • 用于設置頭文件的相對路徑
  • 全局路徑默認為功能包所在目錄,功能包的頭文件一般放在功能包根目錄下的 include 文件夾,所以需要此處添加此文件夾
  • 還包含 catkin 編譯器默認的其他頭文件路徑,如:ROS 默認安裝路徑、Linux 系統路徑等

(2)add_exectuable

  • 用于設置需要編譯的代碼和可執行文件
  • 第一個參數為期望生成的可執行文件(節點)名稱
  • 后面的參數為參與編譯的源文件(.cpp),若需要多個代碼文件,可依次列出,空格分隔

(3)target_link_libraries

  • 用于設置鏈接庫
  • 有些功能需要使用系統或第三方庫函數,通過該選項可以配置執行文件鏈接的庫文件
  • 第一個參數與 add_exectuable 相同,為可執行文件(節點)名稱
  • 后面的參數為需要鏈接的庫,依次列出,空格分隔

(4)add_dependencies

  • 用于設置依賴
  • 有時候需要自定義消息類型,消息類型會在編譯過程中產生相應語言的代碼。若編譯的可執行文件依賴這些動態生成的代碼,則需要添加 ${PROJECT_NAME}_generate_messages_cpp 配置

(5)自定義數據類型:消息 msg、服務 srv、動作 action

  • find_package(catkin REQUIRE COMPONENTS message_generation)
  • catkin_package(CATKIN_DEPENDS message_runtime)
  • add_message_files(FILES xxx.msg)
  • add_service_files(FILES xxx.srv)
  • add_action_files(FILES xxx.action)
  • generate_messages(DEPENDENCIES std_msgs)

模板:

cmake_minimum_required

2. package.xml 文件

  • <build_depend></build_depend> 標簽定義了功能包中代碼編譯時所依賴的其他功能包
  • <exec_depend></exec_depend> 標簽定義了功能包中可執行程序運行時所依賴的其他功能包
  • 自定義數據類型:話題消息 msg、服務數據 srv,需添加
<build_depend>message_generation

模板:

<?xml version="1.0"?>

總結

以上是生活随笔為你收集整理的用于创建此对象的程序是package_【ROS 学习笔记】CMakeLists.txt 与 package.xml的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。