董慧妍江苏省苏州建设交通学校,江苏苏州 215104
以C++编程为例。C编程类似。系统为RedHat Linux 7.2;桌面为KDE ;文本编辑器为kate。假定读者编写了两个文件hello. cpp, world.cpp。hello.cpp为主程序,在工作目录下建立一个新的子目录”test”,再在test下建立一个”helloworld”的子目录,这个目录将作为存放hello这个程序及其相关文件的地方:
将hello.cpp及world.cpp文件copy至helloworld目录下。
使用文本编辑器生成一个新文件,命名为makefile,无需加文件后缀。
新文件内容为:
保存该文件。在命令行下打make即可实现对文件的联合编译。如果源程序没有错误,编译成功后,就可以在命令行打入
% ./test
执行程序了。
如果加后缀进行编译
% make clean
表示编译完成后执行rm *.o语句:删除编译过程中生成的中间文件。
制作实现对C程序联合编译的makefile文件类似,所要修改的地方是:
在makefile文件中,将g++以gcc代替,即修改相应的编译器(g++是C++的编译器,而gcc是C的编译器);并以后缀为.c的C源程序代替后缀为.cpp的C++源程序。
Makefile = target(目标)+dependencies(关联)+command(命令)
读者可能已经注意到,makefile文件实际上是由一些目标、关联和命令(或者说是动作)组合而成的规则集。Makefile是一个文本形式的数据库,其中包含一些规则告诉make编译哪些文件、怎样编译以及在什么条件下去编译。每条规则包含以下内容:一个“目标体”(target),即make最终需要创建的东西。包含一个或多个“依赖体”(dependency)的列表,依赖体通常是编译目标体需要的其它文件为了从指定的依赖体创建除目标体所需执行的“命令”(command)的列表。在makefile文件中,出现命令的该行行首总是以制表符开始,而不是空格,这要注意。
qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。 qmake是用来为不同的平台的开发项目创建makefile的Trolltech开发一个易于使用的工具。qmake简化了makefile的生成,所以为了创建一个makefile只需要一个只有几行信息的文件。qmake可以供任何一个软件项目使用,而不用管它是不是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。
qmake基于一个项目文件这样的信息来生成makefile。项目文件可以由开发者生成。项目文件通常很简单,但是如果需要它是非常完善的。不用修改项目文件,qmake也可以为Microsoft Visual Studio生成项目。
QMAKESPEC环境变量
举例来说,如果你在Windows下使用Microsoft Visual Studio,然后你需要把QMAKESPEC环境变量设置为win32-msvc。如果你在Solaris上使用gcc,你需要把QMAKESPEC环境变量设置为solaris-g++。
在qt/mkspecs中的每一个目录里面,都有一个包含了平台和编译器特定信息的qmake.conf文件。这些设置适用于你要使用qmake的任何项目,请不要修改它,除非你是一个专家。例如,假如你所有的应用程序都必须和一个特定的库连接,你可以把这个信息添加到相应的qmake.conf文件中。
项目(.pro)文件
一个项目文件是用来告诉qmake关于为这个应用程序创建makefile所需要的细节。例如,一个源文件和头文件的列表、任何应用程序特定配置、例如一个必需要连接的额外库、或者一个额外的包含路径,都应该放到项目文件中。
使用qmake创建一个项目文件
qmake使用储存在项目(.pro)文件中的信息来决定Makefile文件中该生成什么。
一个基本的项目文件包含关于应用程序的信息,比如,编译应用程序需要哪些文件,并且使用哪些配置设置。
这里是一个简单的示例项目文件:
SOURCES = hello.cpp
HEADERS = hello.h
CONFIG += qt warn_on release
SOURCES = hello.cpp
这一行指定了实现应用程序的源程序文件。在这个例子中,恰好只有一个文件,hello.cpp。大部分应用程序需要多个文件,这种情况下可以把文件列在一行中,以空格分隔,就像这样:
SOURCES = hello.cpp main.cpp
当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:
Makefile可以像这样由“.pro”文件生成:
qmake -o Makefile hello.pro
对于Visual Studio的用户,qmake也可以生成“.dsp”文件,例如:
qmake -t vcapp -o hello.dsp hello.pro
[1]李善平,郑扣根.Linux操作系统及实验教程[M].北京:机械工业出版社,1999,10.
[2]St roustrup B. Learning Standard C++ as a New
Language. C/C++ Users Journal,1999,5:43-54.