Qt pro 文件使用设置指南 【文摘】

说明:本文内容引自《C++GUI Qt4编程(第2版)》

布兰切特 (Jasmin Blanchette) (作者), 萨默菲尔德 (Mark Summerfield) (作者), 闫锋欣 (译者), 曾泉人 (译者), 张志强 (译者)

本文并非也无意用于任何形式的商业目的。转载请不要遗失以上的著作信息。

Qt 工程文件主要分为三种:

app(单独的应用程序)、lib(静态和动态库)和 subdirs(递归编译)。工程文件的类型可以使用 TEMPLATE 变量指定如下:

TEMPLATE = lib

Subdirs 模版可以用来编译子目录里的目标文件。在这种情况下,除 TEMPLATE = subdirs 外还需要指定 SUBDIRS 变量。在每个子目录中,qmake 会搜寻以目录名命名的.pro文件,并且会编译该工程。

如果没有 TEMPLATE 这一项,那么默认工程是 app。对于 app 或者 lib 工程,最常用的变量是下面这些:

1、HEADERS 指定工程的 C++ 头文件

2、SOURCES 指定工程的 C++ 实现文件

3、FORMS 指定需要 uic 处理的由 Qt 设计师生成的 .ui 文件

4、RESOURCES 指定需要 rcc 处理的 .qrc 文件

5、DEFINES 指定预定义的 C++ 预处理器符号

6、INCLUDEPATH 指定 C++ 编译器搜索全局头文件路径

7、LIBS 指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自 UNIX 的 -L 和 -l 标识符来指定(例如,-L/user/local/lib 和 -ldb_cxx)

8、CONFIG 指定各种用于工程配置和编译的参数

9、QT 指定工程所要使用的 Qt 模块(默认的是 core gui,对应于 QtCore 和 QtGui 模块)

10、VERSION 指定目标库的版本号

11、TARGET 指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本号(默认的是当前的目录名)

12、DESTDIR 指定可执行文件放置目录

13、DLLDESTDIR 指定目标库文件放置的目录

CONFIG 变量用来控制编译过程中的各个方面。它支持的参数有:

(1) debug 是指编译具有调试信息的可执行文件或库,链接调试版的 Qt 库。

(2) release 是指编译不具有调试信息的可执行文件和或库,链接发行版的 Qt 库。如果同时制定 debug 和 release,则 debug 有效。

(3) warn_off 会关闭大量的警告。默认情况下,警告的状态是打开的。

(4) qt 是指应用程序或库使用 Qt。这一选项是默认包括的。

(5) dll 是指动态编译库。

(6) staticlib 是指静态编译库。

(7) plugin 是指编译一个插件。插件总是动态库,因此这一参数暗指 dll 参数。

(8) console 是指应用程序需要写控制台(使用 cout,cerr,qWarning(),等等)。

(9) app_bundle 只适用于 Mac OS X 编译,是指可执行文件被放到束中,这是 Mac OS X 的默认情况。

(10)lib_bundle 只适用于 Mac OS X 编译,指库被放到框架中。

要生成工程文件 toby.pro 的 makefile,可以输入:

qmake toby.pro

在这之后,可以调用 make 或 nmake 编译工程。通过键入以下命令,可以使用 qmake 生成一个 Microsoft Visual Studio 工程(.dsp或.vproj)文件:

qmake–tp vc toby.pro

在 Mac OS X 系统上,可以创建一个 XCode 工程文件:

qmake–spec macx-xcode toby.pro

要创建 makefile,可以输入:

qmake–spec macx-g++ toby.pro

这里的 -spec 命令行参数可以用来指定平台/编译器的组合。通常,qmake 可以正确地检测到所在的平台,但在某些情况下则有必要显式地指定平台情况。例如,在 Linux 上以 64 位模式调用 Intel C++ 编译器(ICC)生成 makefile,应当输入:

qmake–spec linux-icc-64 toby.pro

那些可用的规则在 Qt 的 mkspecs 目录中。

尽管 qmake 的主要目的是生成 .pro 文件的 makefile,但也可以使用 -project 参数在当前目录下使用 qmake 生成 .pro 文件,例如:

qmake–project

在这种模式下,qmake 将搜索当前目录下已知扩展名(.h、.cpp、.ui,等等)的文件,生成一个列举这些文件的 .pro 文件。

Pro 文件的注释以井号(#)开头,在行尾处结束。

有时可能需要在 .pro 文件中指定包含空格的文件名。在这种情况下,只需要简单地把文件名用引号括起来即可。

当在不同的平台上编译工程时,可能有必要基于平台指定不同的文件或者不同的参数。 qmake 的条件判断语法是:

condition{
         then-case
}else{
         else-case
}

Condition 部分可以是平台名字(例如,win32、unix 或者 macx),或者更复杂的断言。then-case 和 else-case 部分使用标准语法为变量赋值。例如:

win32{
         SOURCES+= serial_win.cpp
}else{
         SOURCES += serial_unix.cpp
}

else 分支是可选的。为了方便,当 then-case 部分仅有一条变量赋值,而且在没有 else-case 分支时,qmake 也支持单行形式的语法:

condition:then-case

例如:

macx:serial_mac.cpp

如果有几个工程文件需要共享相同的项,则可以把相同的项提取到单独的文件中,在各自的 .pro 文件中使用 include() 语句包含它们:

include(../common.pri)

HEADERS+= toby.h
SOURCES+= main.cpp \
         toby.cpp

通常,打算被别的工程文件所包含的工程文件会带有 .pri(工程包含)的扩展名。

你可能感兴趣的:(Qt pro 文件使用设置指南 【文摘】)