一、ant
1.Ant是一种基于Java的构建工具。Ant意思是Another Neat Tool
2.Ant是基于Java的开放源码构建工具,通过配置一个xml文件快速开发创建和部署过程。
An使用构建文件来完成一系列操作。它是一个流程脚本引擎,用于自动化调用程序完成项目的下列任务:
编译、打包、测试、调用系统命令(exec)。。。。javac:用于编译java源码。
开始一个新的项目时,首先应该编写Ant构建文件。构建文件定义了构建过程,并被团队开发中每个人使用。Ant构建文件默认命名为build.xml,也可以取其他的名字。只不过在运行的时候把这个命名当作参数传给Ant。构建文件可以放在任何的位置。
构建文件的特点:
1.以xml文件来描述的;
(2)陈述式语法。
(3)每个构建文件包含一个工程(project)
(4)每个工程包含若干个目标(target)
(5)目标可以依赖于其他的目标(depends)
(6)目标包含任务(task)
(7)echo标签:当构建抵达这里时,它将显示该文本内容
(8)要想调用ant执行解决方案编译,必须先到.xml构建文件所在目录下在终端调用ant。
(9)ant会调用系统命令exec让其来调用make命令来执行makefile文件。
二、make makefile
make负责组织构建的过程,也就是负责指挥编译器如何编译,连接器如何连接,最后生成一个可用的文件。
利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相应关系。而如此多的源文件,如果每次都要检入gcc命令进行编译的话,对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,即组织gcc批量对源文件进行编译,并且可以对程序员在上次编译修改过的部分进行编译。因此,有效的利用make工具将大大提高项目开发的效率。
makefile文件
make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接成可执行文件,并要求定义源文件之间的依赖关系。makefile文件是许多编译器--包括windows NT下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改makefile文件而已。
Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属于你自己的工程,整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。不过这需要我们投入一些时间去完成一个或者多个称之为Makefile 文件的编写。
三、g++ gcc(真正干活的)
对单个源文件进行编译
GCC and g++分别是gnu的c & c++编译器 GCC/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
总之,ant会组织多个make进行编译,make会组织多个gcc真正编译,链接,生成exe。一般情况单编一个解决方案中的一个工程的时候就用make,相当于vs里面的build only,如果要构建整个解决方案的话,就用ant,相当于vs里面的F7,要单编一个cpp的时候用g++,相当于vs里面的compile,如果某个工程要清除重编,用make clean命令。在用ant和make的时候必须先把目录转到构建文件build.xml和makefile文件所在目录,然后直接在终端输入ant或make即可。
四、qmake
手写Makefile是比较困难而且容易出错,尤其在进行跨平台开发时必须针对不同平台分别撰写Makefile,会增加跨平台开发复杂性与困难度。qmake会根据专案文件(.pro)里面的信息自动生成适合平台的 Makefile。开发者能够自行撰写专案文件或是由qmake本身产生。qmake包含额外的功能来方便 Qt 开发,如自动的包含moc 和 uic 的编译规则。