gcc、make、cmake的区别

make和cmake命令的关系和区别

gcc

gcc简单的来说,它就是Linux平台的一个编译器,当然,它还有其它的平台。我们可以使用gcc来编译我们的(C、C、Object-C等等),比如我们这里有一个文件,hello_world.c,它是用来在标准输出打印一行”hello world”程序的源代码,这个时候我们就可以使用:

1
gcc hello_world.c

便可以生成一个a.out的可执行文件。

可是,我们的程序有时候可能不是一个单一的源文件,当我们的项目是一个很大的工程时,用gcc命令逐个编译,可能一不小心就会出错。类似于shell脚本,就出现了make工具。

make

make工具通过调用makefile文件中的命令便可以对大型程序进行编译,而makefile文件中就包含了调用gcc去编译多个源文件的命令。

但是,很快又出现了一个问题,如果我们的程序是跨平台的,如果换个平台makefile又要重新修改,这会很麻烦,所以就出现了cmake这个工具,通过cmake我们就可以快速创建出不同平台的makefile文件。

Cmake

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

而Cmake又是根据CMakeLists.txt来生成makefile文件。在编写一个大型程序时,首先编写CMakeLists.txt,然后通过cmake命令就可以生成makefile文件,再通过make命令就可以使用这个makefile文件从而生成可执行文件。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!