make,makefile,cmake,qmake是什么?
首先这些东西都是用于编译用的,当然cmake还有其他功能,但是这里不作展开。
下面这张图,当你看完后面的内容之后就会理解了。
gcc
gcc是GNU Compiler Collection(就是GNU编译器套件)
,也可以简单认为是编译器。它将我们编写的文本代码,编译成可执行文件,当我的程序只有一个源文件时,直接就可以用gcc命令编译。但是如果是多个源文件时,用gcc命令逐个编译就显得工作量很大。所以出现了make工具
make
make工具可以看成是一个智能的批处理工具,它本身没有编译和链接功能,而是用类似批处理的方式通过调用makefile文件中用户指定的命令来进行编译和链接的。
makefile
makefile命令中就包含了调用gcc去编译某个源文件的命令,在一些简单的工程完全可以人工手写,但是工程量非常大时,手写makefile也是非常麻烦的,如果换个平台makefile又需要重新修改,这就需要cmake工具了。
Cmake
cmake就可以更简单的生成makefile文件给上面那个make用,当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用在自己去修改了。那cmake是根据什么生成makefile呢,那就是CmakeLists.txt文件(学名:组态档)去生成makefile。而CmakeLists.txt文件,就需要手写了,当然有些IDE是可以帮你生成的,例如VS
qmake
因为qt是跨平台C++图形用户界面应用程序开发框架,且它对C++进行了扩展,用它独有的moc编译器,所以普通的makefile文件就不适用了,它需要先用moc编译之后,在生成makefile文件,因此qmake就产生了。qmake根据工程文件.pro来生成对应的makefile,使用起来非常的简单,而cmake的CMakeLists.txt写起来会比.pro复杂,所以一般的工程使用qmake就可以了。
当你的工程非常大的时候,又有qt部分的子工程,又有其他语言的部分子工程,据说用cmake会方便,我没试过。