1. make 是用来执行Makefile的
2. Makefile是类unix环境下(比如Linux)的类似于批处理的"脚本"文件。其基本语法是: 目标+依赖+命令,只有在目标文件不存在,或目标依赖的文件更旧,命令才会被执行。由此可见,Makefile和make可适用于任意工作,不限于编程。
3. Makefile+make可理解为类unix环境下的项目管理工具,但它太基础了,抽象程度不高,而且在windows下不太友好(针对visual studio用户),于是就有了跨平台项目管理工具cmake
4. cmake是跨平台项目管理工具,它用更抽象的语法来组织项目。虽然,仍然是目标,依赖之类的东西,但更为抽象和友好,比如你可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。也就是说,从同一个抽象规则出发,它为各个编译器定制工程文件。
5. cmake是抽象层次更高的项目管理工具cmake命令执行的CMakeLists.txt文件。
6. qmake是Qt专用的项目管理工具,对应的工程文件是*.pro,在Linux下面它也会生成Makefile,当然,在命令行下才会需要手动执行qmake,完全可以在qtcreator这个专用的IDE下面打开*.pro文件,使用qmake命令的繁琐细节不用你管了。

总结一下,make用来执行Makefile,cmake用来执行CMakeLists.txt,qmake用来处理*.pro工程文件。Makefile的抽象层次最低,cmake和qmake在Linux等环境下最后还是会生成一个Makefile。cmake和qmake支持跨平台,cmake的做法是生成指定编译器的工程文件,而qmake完全自成体系。

具体使用时,Linux下,小工程可手动写Makefile,大工程用automake来帮你生成Makefile,要想跨平台,就用cmake。如果GUI用了Qt,也可以用qmake+*.pro来管理工程,这也是跨平台的。当然,cmake中也有针对Qt的一些规则,并代替qmake帮你将qt相关的命令整理好了。

另外,需要指出的是,make和cmake主要命令只有一条,make用于处理Makefile,cmake用来转译CMakeLists.txt,而qmake是一个体系,用于支撑一个编程环境,它还包含除qmake之外的其它多条命令(比如uic,rcc,moc)。

上个简图,其中cl表示visual studio的编译器,gcc表示linux下的编译器

 

最新文章

  1. python , angular js 学习记录【1】
  2. Create new tool for CSV
  3. [LeetCode] Longest Consecutive Sequence
  4. jquery之remove(),detach()方法详解
  5. JS回到顶部代码小记
  6. Java基础(32):String与StringBuilder、StringBuffer的区别(String类)
  7. 你早该这么玩Excel 读书笔记
  8. IOS开发基础
  9. centos-nginx添加模块(无需重新编译)
  10. DB天气app冲刺第六天
  11. Mac神器Iterm2的Shell Integration的用法和注意事项
  12. python 基本的序列和映射规则
  13. 2017.3.12 H5学习的第一周
  14. 关于oracle表名区分大小写的问题
  15. js要怎么接收后端传的excel文件流?
  16. Python语言学习之Python入门到进阶
  17. Python中的pass的作用
  18. Cracking The Coding Interview 3.6
  19. Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
  20. Python 数据分析基础小结

热门文章

  1. 跨域(四)——document.domain
  2. bug提单规范
  3. cpu-io.sh
  4. Structs复习 字符编码问题
  5. (转)C#如何加载程序运行目录外的程序集
  6. [译]CQRS介绍
  7. 创建maven项目前的准备工作
  8. requirejs案例
  9. vue 组件中this指向
  10. html+js自定义颜色选择器