![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=1738887080-ppRGZAOU8ibiccbkSaFSlkaHmqJ9qzgS-0-2e0a27b38c21d1d30910ad55fa7626ba)
可以直接使用命令行工具在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=1738887080-TRPfj1wCsJl6saZ6X7CkXHbHnQMQaD0n-0-79907365035b28f7741b0d2ddccabe59)
可以看到,编译完成后,文件夹下多出了一个a.out文件,并且该文件的名称是绿色的,表示它是可执行文件,使用代码清单1-27中的命令即可执行该文件。
代码清单1-27 执行a.out
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/41_01.jpg?sign=1738887080-KUCgOytm2OYLBk3ovNeZDM5PEllrqU5S-0-d063cbf6a49131c4ec4253264449ba64)
使用g++来编译简单的代码文件非常方便,但对于需要各种依赖的复杂代码,使用CMake工具更加方便。在chapt1目录下新建CMakeLists.txt文件,然后输入代码清单1-28中的内容。
代码清单1-28 CMakeLists.txt文件
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/41_02.jpg?sign=1738887080-kmoytu6cEg4g7Voq5HMd7ElBMFsm4M2U-0-d3d7335aa0ec2cfe5ce525eed0936016)
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=1738887080-EbI0fHGsRwgfNRM4SMwxS0TIiIuzgNSB-0-dfa72ed916be6f930c2aacb65551040d)
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=1738887080-CQE2Y2XqE2KjNoovWOF4t4iykKrybPb0-0-80989a775d89a396bd9de0dbcc56298e)
![](https://epubservercos.yuewen.com/6232B7/30716170307984306/epubprivate/OEBPS/Images/42_01.jpg?sign=1738887080-tTpSkF1yhIZTGTRpAym1Qh4OVdcDkDng-0-1275b22e305fbbe4c60d3ef75f3dc450)
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=1738887080-CY3ExeKE36F6bigyUY4EYzDMuCQezKk9-0-762ce4a609017e7050201ae63028044c)