本教程将教授您 qmake 基础知识。本手册中的其它话题包含有关使用 qmake 的更多详细信息。
假定您已完成应用程序的基本实现,且有创建以下文件:
						将找到这些文件在
						
examples/qmake/tutorial
						
						Qt 分发目录。您对应用程序设置唯一知道的事情是,它是以 Qt 编写的。首先,使用喜爱的纯文本编辑器,创建文件称为
						
hello.pro
						
						in
						
examples/qmake/tutorial
						
						。需要做的第一件事是添加一些行,告诉 qmake 属于开发工程的有关源文件和头文件。
					
						首先将源文件添加到工程文件。为此,需要使用
						
							SOURCES
						
						变量。仅仅开始新行采用
						
SOURCES +=
						
						并将 hello.cpp 放于其后。应该有的内容像这样:
					
SOURCES += hello.cpp
对各工程源文件重复这,直到得到以下结束:
SOURCES += hello.cpp SOURCES += main.cpp
若首选使用像 make 句法,可以像这样使用换行转义将所有文件一起列出:
SOURCES = hello.cpp \
          main.cpp
					
					现在源文件已列表于工程文件中,必须添加头文件。这些文件的添加方式与源文件准确相同,除了使用的变量名是 HEADERS .
一旦完成这,工程文件看起来应该像这样:
HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
						目标名称是自动设置的。与工程文件名相同,但带有适于平台的后缀。例如,若工程文件称为
						
hello.pro
						
						,目标将是
						
hello.exe
						
						在 Windows 和
						
hello
						
						在 Unix。若想要使用不同名称,可以在工程文件中设置:
					
TARGET = helloworld
完成后的工程文件应该看起来像这样:
HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
现在,可以使用 qmake 为应用程序生成 Makefile。在工程目录下的命令行,键入以下:
qmake -o Makefile hello.pro
						然后键入
						
make
						
						or
						
nmake
						
						取决于所用的编译器。
					
对于 Visual Studio 用户,qmake 还可以生成 Visual Studio 工程文件。例如:
qmake -tp vc hello.pro
						应用程序发行版未包含任何调试符号或其它调试信息。在开发期间,产生拥有相关信息的应用程序调试版本很有用。这可以轻松达成通过添加
						
debug
						
						到
						
							CONFIG
						
						变量在工程文件。
					
例如:
CONFIG += debug HEADERS += hello.h SOURCES += hello.cpp SOURCES += main.cpp
如之前一样使用 qmake 生成 Makefile。现在将获得有关应用程序的有用信息当在调试环境下运行时。
						经几小时编码,您可能已开始应用程序的特定平台部分,并决定单独从属平台代码。因此,现在有 2 个新文件要包括到工程文件中:
						
hellowin.cpp
						
						and
						
hellounix.cpp
						
						。无法仅仅将这些添加到
						
SOURCES
						
						变量,由于那样会将 2 个文件都放在 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。
可能不想创建 Makefile,若某个文件不存在。可以校验文件是否存在,通过使用 exists() 函数。可以停止 qmake 的处理通过使用 error() 函数。这与作用域工作方式相同。只需采用函数替换作用域条件。校验称为 main.cpp 的文件看起来像这样:
!exists( main.cpp ) {
    error( "No main.cpp file found" )
}
					
					
						The
						
!
						
						符号用于否定测试。也就是说,
						
exists( main.cpp )
						
						为 true 若文件存在,而
						
!exists( main.cpp )
						
						为 true 若文件不存在。
					
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()
						
						当在命令行运行应用程序时。要看到输出,必须采用适当控制台设置构建应用程序。可以很轻松地放置
						
console
						
						在
						
CONFIG
						
						行以在 Windows Makefile 中包括此设置。不管怎样,假设我们只想添加
						
CONFIG
						
						行当在 Windows 运行
						
							and
						
						当
						
debug
						
						已在
						
CONFIG
						
						行。这要求使用 2 嵌套作用域。首先创建一个作用域,然后在其中创建另一个。将要处理的设置放入第 2 作用域,像这样:
					
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 教程,并准备为开发工程编写工程文件。