关于gcc、make和CMake的区别

CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,而后用cmake命令将CMakeLists.txt文件转化为make所须要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object)).它的做用和qt的qmake是类似的。
编程

做者:辉常哥编程语言

连接:https://www.zhihu.com/question/36609459/answer/89743845
来源:知乎
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

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

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

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

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

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

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

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

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

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

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

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

12.cmake是make maker,生成各类能够直接控制编译过程的控制器的配置文件,好比makefile、各类IDE的配置文件。
13.make是一个简单的经过文件时间戳控制自动过程、处理依赖关系的软件,这个自动过程能够是编译一个项目。

相关文章
相关标签/搜索