gcc make 与cmake

Posted sword03

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc make 与cmake相关的知识,希望对你有一定的参考价值。

1. gcc

(1)是什么?

它是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器。它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。

(2)怎么用?

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

(3)极限与困境。

如果你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大。
这时你需要召唤make了。

2. make

(1)是什么?

make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。

makefile是什么?makefile是一个文件,记录了一堆调用gcc(也可以是别的编译器)去编译某个源文件的命令。

(2)怎么用?

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

当项目工程比较简单时,完全可以人工编写makefile。

(3)极限与困境。

但是当工程非常大的时候,手写makefile是非常麻烦的、甚至不可能的事情,如果换了个平台makefile又要重新修改。

这时你需要召唤cmake了。

3. cmake

(1)是什么?

cmake可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。

(2)怎么用?

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

(3)CMakeLists.txt文件谁写啊?

亲,是你自己手写的。

当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形。

4. 个人建议

对于有野心的初学者,强烈建议不直接使用IDE。IDE屏蔽了太多细节,会阻止你成为一个视野开阔的开发者。

5. 参考

以上是关于gcc make 与cmake的主要内容,如果未能解决你的问题,请参考以下文章

GCC ,Clang 与 make,cmake 一览

gcc/make/makefile/cmake/qmake的区别与联系

为啥使用 Make 3.8.1 构建与 Make 4.1 不同?

linux工程构建:make,cmake

[Linux从无到有]gcc/g++与make/makefile

gcc编译流程