单选题
18、在ROS机器人操作系统中,下列哪些是CMake没有而Catkin有【Catkin扩展了】的指令()。
A
addⱣⱤmessageⱣⱤfiles()
B
generateⱣⱤmessages()
C
addⱣⱤactionⱣⱤfiles()
D
以上均是
答案解析
正确答案:D
解析:
这道题考查的是 ROS(Robot Operating System)构建系统中 **Catkin** 相对于标准 **CMake** 的扩展功能。
### 解析过程:
1. **背景知识**:
* **CMake** 是一个跨平台的自动化建构系统,它使用 `CMakeLists.txt文件来描述构建过程。标准的 CMake 提供了如 `add_executable`、`add_library`、`target_link_libraries`等通用指令。
* **Catkin** 是 ROS 推荐的构建系统,它是基于 CMake 的宏和脚本集合。Catkin 旨在简化 ROS 包(Package)的构建,特别是处理 ROS 特有的消息(`.msg`)、服务(`.srv`)和行动(`.action`)文件的编译和代码生成。
2. **选项分析**:
* **A. `add_message_files()`**:
这是 Catkin 提供的宏指令。它的作用是将 `.msg` 文件注册到构建系统中,以便后续生成对应编程语言(如 C++、Python)的消息头文件或模块。标准 CMake 没有这个指令,因为它不懂 ROS 的消息格式。
* **B. `generate_messages()`**:
这也是 Catkin 提供的宏指令。它触发实际的消息代码生成过程,依赖于之前通过 `add_message_files()` 和 `add_service_files()` 注册的文件。标准 CMake 不具备此功能。
* **C. `add_action_files()`**:
同样属于 Catkin 的扩展指令。用于注册 `.action` 文件,以便生成行动相关的代码。标准 CMake 无法直接处理 ROS 的行动定义文件。
3. **结论**:
选项 A、B、C 中的指令都是 Catkin 为了支持 ROS 特有的通信机制(消息、服务、行动)而专门扩展出来的 CMake 宏。它们都不是原生 CMake 的一部分。因此,这三个选项都符合“CMake 没有而 Catkin 有”的描述。
### 最终答案:
**D. 以上均是**
题目纠错
新能源汽车大赛题库
