第一个C++程序

C++的HelloWorld编写流程

1. 在src下新建hello.cpp文件

1
2
3
int main() {
    return 0;
}

Tip

编写好基本的main函数就行。

此时clion工具上方会提示:The file dose not belong to any project target,code insight features might not work properly.

这个警告告诉我们此文件不属于任何项目,意思就是我们没有将这个文件管理起来。

2. 配置CMakeLists.txt

我们要管理cpp文件,将cpp文件作为启动项,需要将cpp文件注册到CMakeLists.txt中,以hello.cpp为例,打开CMakeLists.txt,在其中添加以下代码:

1
2
3
4
add_executable(cpphello src/hello.cpp)
target_link_libraries(cpphello
    ${catkin_LIBRARIES}
)

Tip

add_executable中的前一个hello是为src/hello.cpp取的一个节点名称,需要和target_link_libraries中的第一hello一致。名称需要一致,可以随意取。

添加完成后,在clion上可以打开Enable Auto-reload,这样CMakeLists.txt就可以重新编译了,之前hello.cpp中的警告就会消失。

3. 编写HelloWorld的代码

Note

ros::init可以帮助我们初始化ros环境。最后一个参数为初始化后的Node节点名称。

ros::NodeHandle为当前进程的Node节点实例。

调试运行代码

1. 项目编译

启动命令行,来到工作空间目录下,编译项目

1
2
cd first_ws
catkin_make

Tip

编译的过程,会将新建的package进行编译,将其中定义的hello.cpp编译成可执行的node

2. 启动ROS Master

打开新的命令行,启动ROS master

1
roscore

Tip

ROS节点启动前,必须启动ros master

3. 运行节点

启动编译好的node节点,有**两种方式**可以运行。

通过clion工具直接运行

通过命令行运行

1. 打开新的命令行,来到工作空间目录下,source一下开发环境

Tip

做这一步的操作是为了让rosrun 命令找到刚刚编译好的node

2. 通过命令运行编译好的node
1
rosrun demo_cpp cpphello

Tip

rosrun命令后跟第一个参数是package的名称,第二个参数是节点名称