2018年12月23日 下午1:56
make makefile cmake qmake都是什么,有什么区别? - 知乎
Make,makefile工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能
- 其基本语法是: 目标+依赖+命令,只有在目标文件不存在,或目标比依赖的文件更旧,命令才会被执行。
- 由此可见,Makefile和make可适用于任意工作,不限于编程。比如,可以用来管理latex
cmake是跨平台项目管理工具,它用更抽象的语法来组织项目。
- 虽然,仍然是目标,依赖之类的东西,但更为抽象和友好
- 从同一个抽象规则出发,它为各个编译器定制工程文件
- 在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。
qmake产生的原因:
- 你在进行QT程序编译前就必须先调用moc和uic对Qt源文件进行预处理,然后再调用编译器进行编译*。上面说的那种普通makefile文件是不适用的,它没办法对qt源文件进行预处理。
- 你可以用Qt简简单单就实现非常复杂的功能,是因为Qt对C++进行了扩展,你写一行代码,Qt在背后帮你写了几百上千行,而这些多出来的代码就是靠Qt专有的moc编译器(The Meta-Object Compiler)和uic编译器(User Interface Complier)来重新翻译你那一行代码。
Qmake工具就是Qt公司制造出来,用来生成Qt 专用makefile文件,这种makefile文件就能自动智能调用moc和uic对源程序进行预处理和编译。qmake当然必须也是跨平台的,跟cmake一样能对应各种平台生成对应makefile文件。
qmake和cmake有什么区别?
- cmake也是同样支持Qt程序的,cmake也能生成针对qt 程序的那种特殊makefile,
- 只是cmake的CMakeLists.txt 写起来相对与qmake的pro文件复杂点
此项目用qmake会出错,原因未知:
/mac/[%E6%91%98%E6%8A%84]make%20makefile%20cmake%20qmake%E9%83%BD%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB/8739D41A-5722-4BB1-B964-2E910998E3E6.png)