![ROS 2机器人开发:从入门到实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/209/51975209/b_51975209.jpg)
1.4.4 在Linux中编写C++程序
有了编写Python程序的经验,编写C++程序也轻而易举。在chapt1目录下新建hello_world.cpp,并输入代码清单1-25中的内容,然后保存代码并运行。
代码清单1-25 hello_world.cpp
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/40_03.jpg?sign=1739213703-p7LlLYreI0onQzskFy4Qhicyy9BXqwqc-0-801f32c3ef44747b034a1e136c06f5b9)
可以直接使用命令行工具在Ubuntu中编译代码,这个工具就是g++。打开集成终端,进入chapt1目录,然后输入代码清单1-26中的命令,使用g++编译hello_wolrd.cpp代码。
代码清单1-26 使用g++编译hello_world.cpp
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/40_04.jpg?sign=1739213703-4sJyDFcBufQnaiOCU5bjzOKS6nSSYSTQ-0-b9ff2d4de4d8e4ddf184c870ac4403ad)
可以看到,编译完成后,文件夹下多出了一个a.out文件,并且该文件的名称是绿色的,表示它是可执行文件,使用代码清单1-27中的命令即可执行该文件。
代码清单1-27 执行a.out
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/41_01.jpg?sign=1739213703-BJHVSsDNU6P9siJb8uolrN70yBT0jm7i-0-b80dce1ee6955815ce2485f69ef941b1)
使用g++来编译简单的代码文件非常方便,但对于需要各种依赖的复杂代码,使用CMake工具更加方便。在chapt1目录下新建CMakeLists.txt文件,然后输入代码清单1-28中的内容。
代码清单1-28 CMakeLists.txt文件
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/41_02.jpg?sign=1739213703-tDqGqWFINfykeZrwQa8cAZvmQTKtr3cO-0-a4d0718e45ed1e1d8abfe5cd58f4ff39)
CMakeLists.txt中的指令一共有三行,第一行用于给出构建当前文件最低的CMake版本,第二行用于声明工程的名字,第三行用于添加一个可执行文件。这里learn_cmake表示可执行文件的名字,hello_world.cpp是可执行文件相对CMakeLists.txt文件的路径。
编写好并保存后,在终端中进入chapt1目录,输入代码清单1-29中的命令就可以将CMakeLists.txt转换为Makefile。
代码清单1-29 使用cmake生成Makefile
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/41_03.jpg?sign=1739213703-NPoI58cUasu9QZQmnZjO1IRiENgnjSKv-0-2b46749e50f431708dd192d4cf3620db)
cmake命令用于构建CMakeLists.txt,后面的参数“.”表示CMakeLists.txt在当前终端同级目录搜索CMakeLists.txt文件。构建完成后会在当前目录生成结果文件,其中Makefile文件可以被make命令读取并进行代码编译,继续在上面的终端中输入代码清单1-30中的命令即可完成编译。
代码清单1-30 使用make命令完成编译
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/41_04.jpg?sign=1739213703-KOjvqRO0Mzkcd0Hk5vpS4PT00vhFd0kv-0-ea145c28b0ba7b67e0a7f3683a495f49)
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/42_01.jpg?sign=1739213703-SoYsJRd16hR8zQm0a9CeRUyaGTBzyP9c-0-7ff2a1e9425e654e613f1c8b4107aa4c)
make命令会调用编译器将代码转换成可执行文件,所以运行完make命令后,查看chapt1目录下的文件,就可以看到生成的learn_cmake可执行文件。输入代码清单1-31中的命令就可以执行learn_cmake。
代码清单1-31 执行learn_cmake
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/42_02.jpg?sign=1739213703-CpUo2lskN8yrOuKaZXZEdsxrID7Gp627-0-6d1d0ca83ddc5ce6dbc9bab3a67c4b78)