ant make g++ qmake 详解

来源:互联网 发布:网络侦查系统 编辑:程序博客网 时间:2024/06/09 15:10

一、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 文件的编写。

所要完成的Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile。编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。
make是一个命令工具,它解释Makefile 中的指令(应该说是规则)。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile(在其它的系统上可能是另外的文件名)在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。

三、g++ gcc(真正干活的)

对单个源文件进行编译

GCC and g++分别是gnu的c & c++编译器 GCC/g++在执行编译工作的时候,总共需要4步

1.预处理,生成.i的文件[预处理器cpp] 
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 
4.连接目标代码,生成可执行程序[链接器ld]

编译只能用gcc,链接只能用g++
严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。


总之,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 的编译规则。

0 0