qmake的介绍
qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。
手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。
qmake也注意了Qt的特殊需求,可以自动的包含moc和uic的连编规则。
安装qmake
当Qt被连编的时候,默认情况下qmake也会被连编。
这一部分解释如何手工连编qmake。如果你已经有了qmake,可以跳过这里,请看10分钟学会使用qmake。
手动安装qmake
在手工连编Qt之前,下面这些环境变量必须被设置:
-
QMAKESPEC
这个必须设置为你所使用的系统的平台和编译器的组合。
举例来说,加入你使用的是Windows和Microsoft Visual Studio,你应该把环境变量设置为win32-msvc。如果你使用的是Solaris和g++,你应该把环境变量设置为solaris-g++。当你在设置QMAKESPEC时,可以从下面的可能的环境变量列表中进行选择:
aix-64 hpux-cc irix-032 netbsd-g++ solaris-cc unixware7-g++ aix-g++ hpux-g++ linux-cxx openbsd-g++ solaris-g++ win32-borland aix-xlc hpux-n64 linux-g++ openunix-cc sunos-g++ win32-g++ bsdi-g++ hpux-o64 linux-icc qnx-g++ tru64-cxx win32-msvc dgux-g++ hurd-g++ linux-kcc reliant-64 tru64-g++ win32-watc freebsd-g++ irix-64 macx-pbuilder reliant-cds ultrix-g++ win32-visa hpux-acc irix-g++ macx-g++ sco-g++ unixware-g hpux-acc irix-n32 solaris-64 unixware7-cc
envvar是下面之一时,环境变量应该被设置到qws/envvar:
linux-arm-g++ linux-generic-g++ linux-mips-g++ linux-x86-g++ linux-freebsd-g++ linux-ipaq-g++ linux-solaris-g++ qnx-rtp-g++
-
QTDIR
这个必须设置到Qt被(或者将被)安装到的地方。比如,c:/qt和/local/qt。
一旦环境变量被设置到qmake目录,$QTDIR/qmake,比如C:/qt/qmake,现在根据你的编译器运行make或者nmake。
当编译完成时,qmake已经可以使用了。
注意:一般QT的开发环境安装好了后, qmake就已经可以使用了。
10分钟学会使用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
另一种方式,每一个文件可以被列在一个分开的行里面,通过反斜线另起一行,就像这样:
SOURCES = hello.cpp / main.cpp
一个更冗长的方法是单独地列出每一个文件,就像这样:
SOURCES += hello.cpp SOURCES += main.cpp
这种方法中使用“+=”比“=”更安全,因为它只是向已有的列表中添加新的文件,而不是替换整个列表。
HEADERS这一行中通常用来指定为这个应用程序创建的头文件,举例来说:
HEADERS += hello.h
列出源文件的任何一个方法对头文件也都适用。
CONFIG这一行是用来告诉qmake关于应用程序的配置信息。
CONFIG += qt warn_on release
在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项是更安全的。
CONFIG一行中的qt部分告诉qmake这个应用程序是使用Qt来连编的。这也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。
CONFIG一行中的warn_on部分告诉qmake要把编译器设置为输出警告信息的。
CONFIG一行中的release部分告诉qmake应用程序必须被连编为一个发布的应用程序。在开发过程中,程序员也可以使用debug来替换release,稍后会讨论这里的。
项目文件就是纯文本(比如,可以使用像记事本、vim和xemacs这些编辑器)并且必须存为“.pro”扩展名。应用程序的执行文件的名称必须和项目文件的名称一样,但是扩展名是跟着平台而改变的。举例来说,一个叫做“hello.pro”的项目文件将会在Windows下生成“hello.exe”,而在Unix下生成“hello”。
生成Makefile
当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:
Makefile可以像这样由“.pro”文件生成:
qmake -o Makefile hello.pro
对于Visual Studio的用户,qmake也可以生成“.dsp”文件,例如:
qmake -t vcapp -o hello.dsp hello.pro