先上编译成功的画面:
编译步骤:
先在当前文件夹新建一个名字为CMakeLists.txt文件。(注意名字一定要一样,因为程序就是靠这个名字寻找文件的,千万别偷懒随便输入),然后在文件中输入一些ros中头文件的地址和库的地址和名字。
cmake_minimum_required(VERSION 3.22)
project(first_node)
include_directories(/opt/ros/humble/include/rcl/)
include_directories(/opt/ros/humble/include/rcutils/)
include_directories(/opt/ros/humble/include/rcl_yaml_param_parser/)
include_directories(/opt/ros/humble/include/rosidl_runtime_c/)
include_directories(/opt/ros/humble/include/rosidl_typesupport_interface/)
include_directories(/opt/ros/humble/include/rcpputils/)
include_directories(/opt/ros/humble/include/builtin_interfaces/)
include_directories(/opt/ros/humble/include/rmw/)
include_directories(/opt/ros/humble/include/rosidl_runtime_cpp/)
include_directories(/opt/ros/humble/include/tracetools/)
include_directories(/opt/ros/humble/include/rcl_interfaces/)
include_directories(/opt/ros/humble/include/libstatistics_collector/)
include_directories(/opt/ros/humble/include/statistics_msgs/)
# link_directories - 向工程添加多个特定的库文件搜索路径,相当于指定g++编译器的-L参数
link_directories(/opt/ros/humble/lib/)
# add_executable - 生成first_node可执行文件
add_executable(first_node first_ros2_node.cpp)
# target_link_libraries - 为first_node(目标) 添加需要动态链接库,相同于指定g++编译器-l参数
# 下面的语句代替 -lrclcpp -lrcutils
target_link_libraries(first_node rclcpp rcutils)
然后再在当前文件夹输入
CMake . # .代表的是当前文件夹
Than,你会在当前文件夹发现以下几个新文件。
最后输入在当前位置输入make命令就会出现第一幅图的界面。成功了。
提醒:
每一次尝试失败了以后,要把所有的生成文件删除,最好再把CmakeLists.txt 文件重新输入下。