make cmake catkin_make

.configure------------>Makefile文件---------------make(Makefile)------------->make install(Makefile)-------------->make clean数据库

cmake(CMakeList.txt)------------->Makefile文件--------------->make(Makefile)编程

----------------------------------------------------------------------------------------------------------windows

连接:https://www.zhihu.com/question/27455963/answer/89770919

1.gcc是GNU Compiler Collection(就是GNU编译器套件),也能够简单认为是编译器,它能够编译不少种编程语言(括C、C++、Objective-C、Fortran、Java等等)。

2.当你的程序只有一个源文件时,直接就能够用gcc命令编译它。

3.可是当你的程序包含不少个源文件时,用gcc命令逐个去编译时,你就很容易混乱并且工做量大

4.因此出现了make工具
make工具能够当作是一个智能的批处理工具,它自己并无编译和连接的功能,而是用相似于批处理的方式—经过调用makefile文件中用户指定的命令来进行编译和连接的。

5.makefile是什么?简单的说就像一首歌的曲谱,make工具就像指挥家,指挥家根据曲谱指挥整个乐团怎么样演奏,make工具就根据makefile中的命令进行编译和连接的。

6.makefile命令中就包含了调用gcc(也能够是别的编译器)去编译某个源文件的命令。

7.makefile在一些简单的工程彻底能够人工手下,可是当工程很是大的时候,手写makefile也是很是麻烦的,若是换了个平台makefile又要从新修改。

8.这时候就出现了Cmake这个工具,cmake就能够更加简单的生成makefile文件给上面那个make用。固然cmake还有其余功能,就是能够跨平台生成对应平台能用的makefile,你不用再本身去修改了。

9.但是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。

10.到最后CMakeLists.txt文件谁写啊?亲,是你本身手写的。

11.固然若是你用IDE,相似VS这些通常它都能帮你弄好了,你只须要按一下那个三角形

12.接着是qmake,qmake是什么,先说一下Qt这个东西。Qt是跨平台C++图形用户界面应用程序开发框架。它既能够开发GUI程序,也可用于开发非GUI程序,好比控制台工具和服务器。简单的说就是C++的第三方库,使用这个库你能够很容易生成windows,Linux,MAC os等等平台的图形界面。如今的Qt还包含了开发各类软件通常须要用到的功能模块(网络,数据库,XML,多线程啊等等),比你直接用C++(只带标准内裤那种)要方便和简单。

13.你能够用Qt简简单单就实现很是复杂的功能,是由于Qt对C++进行了扩展,你写一行代码,Qt在背后帮你写了几百上千行,而这些多出来的代码就是靠Qt专有的moc编译器(The Meta-Object Compiler)和uic编译器(User Interface Complier)来从新翻译你那一行代码。问题来了,你在进行程序编译前就必须先调用moc和uic对Qt源文件进行预处理,而后再调用编译器进行编译。上面说的那种普通makefile文件是不适用的,它没办法对qt源文件进行预处理。因此qmake就产生了。

14.qmake工具就是Qt公司制造出来,用来生成Qt 专用makefile文件,这种makefile文件就能自动智能调用moc和uic对源程序进行预处理和编译。qmake固然必须也是跨平台的,跟cmake同样能对应各类平台生成对应makefile文件。

15.qmake是根据Qt 工程文件(.pro)来生成对应的makefile的。工程文件(.pro)相对来讲比较简单,通常工程你均可以本身手写,可是通常都是由Qt的开发环境 Qt Creator自动生成的,你仍是只须要按下那个邪恶三角形就完事了。

16.尚未完,因为qmake很简单很好用又支持跨平台,并且是能够独立于它的IDE,因此你也能够用在非Qt工程上面,照样能够生成普通的makefile,只要在pro文件中加入CONFIG -= qt 就能够了。

17. 这样qmake和cmake有什么区别?
很差意思,cmake也是一样支持Qt程序的,cmake也能生成针对qt 程序的那种特殊makefile,
只是cmake的CMakeLists.txt 写起来相对与qmake的pro文件复杂点。
qmake 是为 Qt 量身打造的,使用起来很是方便,可是cmake功能比qmake强大。
通常的Qt工程你就直接使用qmake就能够了,cmake的强大功能通常人是用不到的。
当你的工程很是大的时候,又有qt部分的子工程,又有其余语言的部分子工程,听说用cmake会 方便,我也没试过。
 
------------------------------------------------------------- ROS编译:catkin简析 ---------------------------------------------

1.  catkin_make 与cmake的关系

    程序在cmake编译是这样的流程, cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译连接生成可执行文件.服务器

catkin_make是将cmake与make的编译方式作了一个封装的指令工具, 规范了工做路径与生成文件路径.网络

1)  cmake标准流程

  1. # 在一个CMake项目里  
  2. $ mkdir build  
  3. $ cd build  
  4. $ cmake ..  
  5. $ make  
  6. $ make install  # (可选)  

2) catkin_make 的流程

  1. # In a catkin workspace  
  2. $ catkin_make  
  3. $ catkin_make install  # (可选)  
  4.   
  5.   
  6. 若是源码不在默认工做空间,须要指定编译路径:  
  7.   
  8. # In a catkin workspace  
  9. $ catkin_make --source my_src  
  10. $ catkin_make install --source my_src  # (optionally)
相关文章
相关标签/搜索