开始
这篇教程会讲述qmake的基础,这本手册的其他主题包含了有关使用qmake的更多信息。
简单的开始
假设你已经完成了你的应用的基本实现,并且你已经创建了如下文件:
1. hello.cpp
2. hello.h
3. main.cpp
首先,在源代码所在的目录用纯文本编辑器创建一个叫hello.pro的文本文件,你要做的第一件事
是在该文件中添加几行来告诉qmake这些源文件和头文件是你的项目中的一部分。
我们首先要添加源文件到项目中,为达成这个目的你需要使用”SOURCES“变量,将hello.cpp
加入项目可以这样做。
SORUCES += hello.cpp
重复这句话将main.cpp加入项目
SOURCES += main.cpp
如果你更喜欢make风格的语法,即一次列出所有文件,你可以使用换行符,就像这样:
SOURCES += hello.cpp \
main.cpp
既然源文件已经被列入项目文件中了,那么头文件也必须被添加。他们的添加方式与源文件完全
相同,除了变量名叫“HEADERS”
当你做完这些事后,你的项目文件应当是这样的:
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
目标名称会自动设置,它与项目文件名相同,只是会添加适合与平台的后缀。例如,如果项目文件
叫做hello.pro,在Windows上目标将会叫做hello.exe,而在Unix上叫hello。如果你想使用
一个不同的名字的话可以在项目文件中设置:
TARGET = helloworld
你可以使用qmake来为你的应用生产makefile,在命令行界面,进入项目目录,输入下列命令:
qmake -o Makefile hello.pro
然后根据你使用的编译器输入’make‘或’nmake‘
对于Visual Studio用户,qmake也可以生成VS项目文件,例如:
qmake -tp vc hello.pro
使应用支持调试
一个应用的release版本不包含任何调试符号与信息。在开发过程中,生成一个调试版本的应用
是很有用的。是应用支持调试很容易,只要在项目文件中的CONFIG变量上增加debug即可。
例如:
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
就像以前一样使用qmake生成一个makefile。现在,您将在调试环境中运行应用程序时获取有用的信息。
添加特定于平台的源文件
在写了几个小时的代码后,你可以已经开始编写你的应用程序中特定与平台的部分了,并且你
决定将平台相关的代码分开。所以你现在在你的项目文件中包含了两个新文件:hellowin.cpp,
hellounix.cpp。我们不能简单的将这两个文件添加到SOURCES中,因为这会将这两个文件都
添加到makefile中。那么我们需要做的就是根据我们正在构建的平台来使用一个将被处理的范围。
下面是一个简单的例子,一个针对Windows的域:
win32 {
SOURCES += hellowin.cpp
}
当为Windows构建项目时,qmake会添加hellowin.cpp到源文件列表中,当为其他平台构建时
qmake会简单的忽略他。现在只需要为特定于Unix的文件构建一个域即可。
当你完成这些后,你的项目文件看起来像这样:
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
像之前一样使用qmake生成makefile
当文件不存在时停止qmake
你可能会需要当某个特定文件不存在时创建一个makefile。我们可以使用“exist()”函数来
检查一个文件是否存在。我们可以通过使用“error()”函数来停止qmake处理。它与域控制
的作用相同,只是简单的使用函数来替换域状态。检查一个名为main.cpp的文件如下所示:
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
符号“!”用来表示否定。这意味着:如果文件存在exists( main.cpp )
为真,文件不存在
!exists( main.cpp )
为真。
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
像以前一样使用qmake生成makefile,如果暂时重命名了main.cpp,那你就会看到这个消息
并且qmake将会停止处理。
检查多种条件
假设你使用Windows并且你希望能够在命令行中用qDebug()来查看程序运行时的状态输出。
想要查看输出,你必须使用适当的控制台设置来构建你的应用。我们可以很容易的在“CONFIG”
行中添加“console”来在Windows下的makefile中包含这个设置。但是,假设我们只想在
Windows上运行时添加CONFIG行,并且debug已经在CONFIG行上。这就需要两个嵌入的域。
第一个创建一个域,然后在它内部创建另一个,将要处理的设置放在第二个范围内,就像这样
win32 {
debug {
CONFIG += console
}
}
嵌入的域可以使用冒号合并在一起,所以最后的项目文件就像这样:
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
win32:debug {
CONFIG += console
}
就是这样!您现在已经完成了qmake教程,并已经准备好为您的开发项目编写项目文件了。