CMakeLists.txt原本是Cmake编译系统的规则文件,而Catkin编译系统基本沿用了CMake的编译风格,只是针对ROS工程添加了一些宏定义。所以在写法上,catkin的CMakeLists.txt与CMake的基本一致。
该文件规定了这个package要依赖哪些package,要编译生成哪些目标,如何编译等等流程,它指定了由源码到目标文件的规则,catkin编译系统在工作时首先会找到每个package下的CMakeLists.txt,然后按照规则来编译构建。
cmake和catkin_make区别:
简单来讲就是catkin_make是cmake的高级封装
cmake只能编译指定的package,但是不同package之间的关系没办法链接,而且cmake只能编译C++。而catkin_make不仅仅可以编译C++还支持python,在编译使用的时候,支持包与包之间的链接。
(1)程序在cmake编译是这样的流程, cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件.
(2)catkin_make是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径。
cmake_minimum_required() #CMake版本号
project() #项目名称,包名
find_package() #找到编译需要的其他CMake/Catkin package,如roscpp,std_msgs...
catkin_python_setup() #catkin新加宏,打开catkin的Py