StupidBeauty
Read times:2668Posted at:Tue Jan 4 10:41:21 2011 - no title specified

Qt4.7.0 文档翻译: qmake 变量参考, qmake Variable Reference

qmake 的基本行为是受那些定义了每个项目的构建过程的变量声明影响的。这些声明资源中的一部分 , 例如头文件和源代码文件 , 是每个项目都有的 ; 其它的一部分用来在特定的平台上改变编译器和链接器的行为。

平台相关的变量遵照它们扩展或者修改的变量的命名风格来命名 , 但是会在它们的名字里面包含相关的平台的名字。例如 , QMAKE_LIBS 可用来指定某个项目需要与之链接的库的列表 , QMAKE_LIBS_X11 可用来扩展或者覆盖这个列表。

BLD_INF_RULES

这个只在 Symbian 平台上起作用 。(注意,本座完全不了解 Symbian 平台)

可以使用 BLD_INF_RULES 变量指定通用的 bld.inf 文件内容。 bld.inf 文件中与每条规则对应的小节都会带上一个小数点附加到 BLD_INF_RULES

例如:

DEPLOYMENT.installer_header = 0x12345678

这会将指定语句添加到生成的 bld.inf 文件中 prj_exports 的小节。

也可以在单个语句块里添加多行。每个双引号括起来的字符串都会被放置在生成的 bld.inf 文件中新的一行。

例如 :

myextension =

"start extension myextension"

"$${LITERAL_HASH}if defined(WINSCW)"

"option MYOPTION foo"

"$${LITERAL_HASH}endif"

"option MYOPTION bar"

"end"

BLD_INF_RULES.prj_extensions += myextension

在每个小节中,你定义的任何规则都添加在自动生成的规则之后。

CONFIG

CONFIG 变量指定项目的配置以及编译器的选项。这些值将被 qmake 在内部识别 , 并且会拥有特殊的含义。下面描述它们。

这些 CONFIG 值控制编译标志:

选项

描述

release

这个项目将会以发布 (release) 模式构建。如果同时指定了 debug , 那么这个选项被忽略。

debug

这个项目将会以调试( debug )模式构建。

debug_and_release

这个项目将 同时 以调试和发布模式构建。这可能会导致某些未知的副作用 ( 继续往下看 , 就能知道更多信息 )

build_all

如果指定了 debug_and_release , 那么在默认情况下 , 项目将会同时以调试和发布模式构建。

ordered

当使用 subdirs 模板时 , 这个选项会指定那些列出来的目录应当按照它们被列出的 顺序来处理。

precompile_header

在项目中启用对 预编译头文件 的支持。

warn_on

编译器应当输出尽可能多的警告。如果指定了 warn_off ,那么这个选项被忽略。

warn_off

编译器应当尽可能少地输出警告。

由于,当 debug release 同时在 CONFIG 变量中定义时, debug 会覆盖掉 release ,因此,如果你想让一个项目同时以两种模式构建的话,就需要使用 debug_and_release 选项。在这种情况下, qmake 生成的 Makefile 会包含一条同时按两个模式构建的规则,这条规则可以按下面的方法执行:

make all

在链接一个库的时候, qmake 依赖下层的平台来获知这个库与哪些其它的库链接。然而,如果是静态链接的,那么除非我们使用以下的 CONFIG 选项,否则 qmake 不会获得这个信息:

选项

描述

create_prl

这个选项使得 qmake 跟踪这些依赖信息。当这个选项被启用时, qmake 会生成一个扩展名为 .prl 的文件,这个文件将保存这个库的元信息(查看库依赖信息以了解更多信息)。

link_prl

当这个选项被启用时, qmake 会处理这个程序链接到的所有库,找到它们的元信息(查看库依赖信息以了解更多信息)。

请注意,在 构建 一个静态库时,需要 create_prl ;在 使用 一个静态库时,需要 link_prl

(原文在这一段缺少一个括号)”,本座将括号补在了自己猜测的地方)在 Windows ( 或者如果 Qt 在配置时指定了 -debug_and_release 参数),将 build_all 选项添加到 CONFIG 变量会导致这个规则成为构建项目时的默认规则,并且会为调试和发布分别创建安装目标。

另外,将 debug_and_release 添加到 CONFIG 变量会导致 debug release 都被添加到 CONFIG 中。当处理项目文件时,会 分别 为调试和发布模式处理用来测试每个值的 作用域 。会为每个模式设置 build_pass 变量,你可以测试这一点,以完成与构建相关的任务。例如:

build_pass:CONFIG(debug, debug|release) {

unix: TARGET = $$join(TARGET,,,_debug)

else: TARGET = $$join(TARGET,,,d)

}

因此 , 在可能的时候 , 指定与模式相关的变量而不是通用的变量 , 是很有用的 , 比如定义 QMAKE_LFLAGS_RELEASE , 而不是 QMAKE_LFLAGS

下面的选项定义程序/库的类型:

选项

描述

qt

这个目标是一个 Qt 程序/库,需要 Qt 库和头文件。适当的 Qt 库的包含路径和库路径会自动添加到项目中。这是默认定义的,可以使用 l{#qt}{QT} 变量进行微调。

thread

目标是一个多线程的程序或者库。将会自动将适当的定义和编译器标志添加到项目中。

x11

目标是一个 X11 程序或者库。将会自动将适当的包含路径和库添加到项目中。

windows

目标是一个 Win32 窗口程序(仅支持 app 模板)。将会自动将适当的包含路径、编译器标志和库添加到项目中。

console

目标是一个 Win32 终端程序(仅支持 app 模板)。将会自动将适当的包含路径、编译器标志和库添加到项目中。

shared

目标是一个共享对象/动态链接库。将会自动将适当的包含路径、编译器标志和库添加到项目中。

dll

dylib

static

目标是一个静态库(仅支持 lib 模板)。将会自动将适当的编译器标志添加到项目中。

staticlib

plugin

目标是一个插件(仅支持 lib 模板)。这也启用了 dll 选项。

designer

目标是一个 Qt Designer 插件。

uic3

如果定义了 , 将使 qmake FORMS3 的内容上运行 uic3; 否则将处理 FORMS 中的内容。

no_lflags_merge

确保 LIBS 变量中依存的库列表不会在使用之前裁减成一个唯一值列表。

resources

如果定义了,将使 qmake RESOURCES 的内容上运行 rcc

这些选项用来设置编译器标志:

选项

描述

3dnow

启用 AMD 3DNow! 指令支持。

exceptions

启用对异常的支持。

mmx

启用 Intel MMX 指令支持。

rtti

启用 RTTI 支持。

stl

启用 STL 支持。

sse

启用 SSE 支持。

sse2

启用 SSE2 支持。

这些选项仅用于在 Windows 上定义特定特性:

选项

描述

flat

当使用 vcapp 模板时 , 这个选项将导致 : 无论那些文件在哪个目录里 , 都会将所有源代码文件放到源代码组中 , 将所有的头文件放到头文件组中。关闭这个选项之后 , 将会依据文件所在的目录把它们放到源代码 / 头文件组中。这个选项默认是启用的。

embed_manifest_dll

将一个清单 (manifest) 文件嵌入到作为一个库项目的一部分而创建的动态链接库中。

embed_manifest_exe

将一个清单文件嵌入到作为一个程序项目的一部分而创建的动态链接库中。

incremental

根据这个选项默认是否启用,来对应地启用或者禁用 Visual C++ 中的增量式链接。

查看 qmake 平台注意事项 ,以了解更多关于嵌入清单文件的选项的信息。

这些选项只在 Mac OS X 上起作用:

选项

描述

ppc

构建一个 PowerPC 二进制文件。

x86

构建一个兼容 i386 的二进制文件。

app_bundle

将可执行程序放到一个软件包里面(这是默认选项)。

lib_bundle

将库放到一个库包里。

构建软件包的过程也被 QMAKE_BUNDLE_DATA 变量的内容影响。

这些选项只在 Symbian 平台有效:

选项

描述

stdbinary

构建一个 Open C 二进制文件(也就是说,取决于目标二进制类型,将会是 STDDLL STDEXE 或者 STDLIB 。)

no_icon

不生成用于在程序菜单中显示可执行程序的图标的资源(仅用于 app 模板)。

symbian_test

在生成的 bld.inf 中的测试小节放置 mmp 文件和扩展 makefile, 以替换它们的常规小节。注意 , 这只会影响自动生成的 bld.inf 内容 ; 通过 BLD_INF_RULES 变量添加的内容不受影响。

这些选项只在 Linux/Unix 平台上起作用:

选项

描述

largefile

包含对大文件的支持。

separate_debug_info

将库的调试信息放到单独的文件里。

在解析作用域时也会检查 CONFIG 变量。你可以将任何东西赋值给这个变量。

例如:

CONFIG += qt console newstuff

...

newstuff {

SOURCES += new.cpp

HEADERS += new.h

}

DEFINES

qmake 将这个变量的值作为编译器的 C 预处理器宏( -D 选项)添加。

例如:

DEFINES += USE_MY_STUFF QT_DLL

DEF_FILE

这个选项只在 Windows 上使用 app 模板,以及 Symbian 上构建一个共享的动态链接库时使用。

指定一个要包含在项目中的 .def 文件。在 Symbian 上可以指定一个目录,在这种情况下,真正的文件是放置在 Symbian 的标准 bwins eabi 目录里的。

DEPENDPATH

这个变量包含的是一个目录列表 , 要查找它们的内容来解决依赖问题。在 被包含的 文件里扫描时将使用这个变量。

DEPLOYMENT

这个选项只用于 Windows CE Symbian 平台。

指定有哪个附加文件要部署。部署的意思就是将文件从开发系统传送到目标设备或者模拟器。

可以通过创建一个 Visual Studio 项目或者使用 cetest 可执行程序来部署文件。

例如:

myFiles.sources = path*.png

DEPLOYMENT += myFiles

这会将 path 中全部的 PNG 图片上传到你的构建目标部署到的相同目录。

Windows CE 的默认部署目标路径是 %CSIDL_PROGRAM_FILES% 目标 ,展开之后通常是 Program Files 目标 。在 Symbian 平台上,默认目标是程序在所安装的驱动器上的私有目录。

还可以指定要部署到 多个目标路径 的多个 源文件 。另外,部署到不同目录时可以使用不同变量。

例如:

myFiles.sources = pathfile1.ext1 path2file2.ext1 path3*

myFiles.path = somepathondevice

someother.sources = C:additionalfiles*

someother.path = myFilespath2

DEPLOYMENT += myFiles someother

注意: Windows CE 中所有链接到的 Qt 库将会被部署到由 myFiles.path 指定的路径中。在 Symbian 平台上,所有的库和可执行程序将永远被部署到所安装到的驱动器上的 sysbin

由于 Symbian 平台的构建系统自动地将二进制文件移动到 epoc32 目录下的特定目录里面,所以需要对自定义插件、可执行程序或者可动态载入的库进行特殊处理。在部署附加的可执行程序或者可动态载入的库时,目标路径必须指定为 sysbin 。对于插件,目标路径必须指定为插件存根将会被部署的位置(查看 H 如何创建 Qt 插件 文档以了解更多关于插件的信息)。如果无法在指定的源文件路径找到那个二进制文件,那么就会在 Symbian 的构建进程移动文件的目标目录查找,例如 epoc32releasearmv5urel

例如:

customplugin.sources = customimageplugin.dll

customplugin.sources += c:mypluginsothercustomimageplugin.dll

customplugin.path = imageformats

dynamiclibrary.sources = mylib.dll helper.exe

dynamiclibrary.path = sysbin

globalplugin.sources = someglobalimageplugin.dll

globalplugin.path = resourceqtpluginsimageformats

DEPLOYMENT += customplugin dynamiclibrary globalplugin

Symbian 平台上 , 还可以使用这个变量来指定通用的 PKG 文件的内容。你可以使用 pkg_prerules 或者 pkg_postrules 来向 PKG 文件传递原始数据。 pkg_prerules 中的字符串会加在 package-body 之前 , pkg_postrules 中的字符串会加在之后。 pkg_postrules pkg_prerules 里面定义的字符串不会被 qmake 解析 , 所以它们应当按照 Symbian 软件包生成工具能理解的格式来写。请参考 Symbian 平台文档 , 以了解正确的语法。

例如,要部署动态链接库并且添加一个新的依赖:

somelib.sources = somelib.dll

somelib.path = sysbin

somelib.pkg_prerules = "(0x12345678), 2, 2, 0, {"Some Package"}"

"(0x87654321), 1, *, * ~ 2, 2, 0, {"Some Other Package"}"

justdep.pkg_prerules = "(0xAAAABBBB), 0, 2, 0, {"My Framework"}"

DEPLOYMENT += somelib justdep

请注意, pkg_prerules 也可以替换 pkg 文件中的默认语句。如果没有定义 pkg_prerules ,那么 qmake 就保证 PKG 文件的语法是正确的,并且包含全部的命令语句,例如:

  • •. 语言,例如
    &EN,FR

  • •. 包头( package-header ),例如
    #{"MyApp-EN", "MyApp-FR"}, (0x1000001F), 1, 2, 3, TYPE=SA

  • •. 本地化及唯一厂商名字,例如
    %{"Vendor-EN", ..., "Vendor-FR"} :"Unique vendor name"

如果你决定覆盖这些语句中的任何一个,那么你需要注意确保其它的语句仍然是有效的。例如,如果你覆盖语言语句,那么你还必须覆盖包头语句和其它与语言相关的语句。

Symbian 平台上, default_deployment 条目指定了默认的平台和软件包依赖关系。如果需要定义替代的依赖的话,那些依赖可以被选择性地禁用--例如,程序是否需要有指定的设备才能运行,或者这个软件包是否需要支持更多语言。现在支持的那些能被禁用的 default_deployment 规则包括:

  • •.pkg_depends_qt

  • •.pkg_depends_webkit

  • •.pkg_platform_dependencies

例如:

default_deployment.pkg_prerules -= pkg_platform_dependencies

my_deployment.pkg_prerules = "[0x11223344],0,0,0,{"SomeSpecificDeviceID"}"

DEPLOYMENT += my_deployment

Symbian 平台上,你可以使用 DEPLOYMENT.installer_header 变量来为你的程序生成智能的安装程序封装器。如果你只将安装程序的 UID 作为值在这里指定,那么将会自动生成安装包的名字和版本号:

DEPLOYMENT.installer_header = 0x12345678

如果自动生成的值不恰当,你也可以自己使用这个变量来指定正确的封装器信息:

DEPLOYMENT.installer_header = "$${LITERAL_HASH}{"My Application Installer"},(0x12345678),1,0,0"

DEPLOYMENT_PLUGIN

这个变量只在 Windows CE Symbian 平台上使用。

这个变量指定要部署的 Qt 插件。 Qt 中所有可用的插件都可以显式地部署到设备上。查看 静态插件 ,那里有一个完整的列表。

注意: Windows CE 上,不会自动部署插件。如果程序依赖一些插件,那么这些插件需要手动指定。

注意 : Symbian 平台上 , 这个变量支持的全部插件在默认情况下都会与 Qt 库一起部署 , 所以一般不需要使用这个变量。

例如:

DEPLOYMENT_PLUGIN += qjpeg

这会将 jpeg 图片格式插件上传到 Windows CE 设备上的插件目录里。

DESTDIR

指定将 目标 文件放到哪里。 Specifies where to put the  file.

例如:

DESTDIR = ../../lib

DESTDIR_TARGET

这个变量是由 qmake 内部设置的,基本上就是 DESTDIR 变量与 TARGET 变量连在一起的结果。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

DLLDESTDIR

指定要将 目标 动态链接库放到哪里。

DISTFILES

这个变量指定一个要包含到发布目标中去的文件的列表。这个特性只被 UnixMake 规范支持。

例如:

DISTFILES += ../program.txt

DSP_TEMPLATE

这个变量是由 qmake 内部设置的,它指定那些用来生成 dsp 文件的 dsp 模板文件要放到哪里存储。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

FORMS

这个变量指定在编译前要由 uic 处理的界面文件(查看 Qt Designer )。构建这些界面文件时需要的全部依赖、头文件和源代码文件都会自动添加到工程中。

例如:

FORMS = mydialog.ui

mywidget.ui

myconfig.ui

如果在你的项目里定义了 FORMS3 ,那么这个变量里面必须包含要由 uic 处理的界面文件,而不是要由 uic3 处理的。如果 CONFIG 包含 uic3 ,又没定义 FORMS3 ,那么这个变量必须只包含 uic3 类型的界面文件。

FORMS3

CONFIG 包含 uic3 时,这个变量指定要在编译之前由 uic3 处理的旧式风格的界面文件。构建这些界面文件时需要的全部依赖、头文件和源代码文件都会自动添加到工程中。

例如:

FORMS3 = my_uic3_dialog.ui

my_uic3_widget.ui

my_uic3_config.ui

GUID

指定在 .vcproj 文件里设置的 GUID GUID 通常是随机确定的。然而,如果你想要一个固定的 GUID ,那么可以用这个变量来设置。

这个变量只对 .vcproj 文件有效;对其它文件,它将会忽略。

HEADERS

定义这个项目的头文件。

qmake 会为指定的头文件生成依赖信息(除非你通过 命令行 指定了 -nodepend )。 qmake 还会自动检测是否要为这些头文件中的类运行 moc ,并且为生成和链接这些 moc 文件而将适当的依赖和文件添加到项目中。

例如:

HEADERS = myclass.h

login.h

mainwindow.h

参考 SOURCES

ICON

这个变量只在 MAC Symbian 平台上用来设置程序的图标。请查看 程序图标文档 ,以了解更多信息。

INCLUDEPATH

这个变量指定在编译项目时应当搜索的 #include 目录。使用 ';' 或者空格作为目录之间的分隔符。

例如:

INCLUDEPATH = c:/msdev/include d:/stl/include

要指定一个包含空格的路径,就用 qmake 项目文件 文档里面提到的技巧将路径包含起来。例如,在 Windows Unix 平台上,可以像下面这样使用 quote() 函数来指定包含空格的路径:

win32:INCLUDEPATH += $$quote(C:/mylibs/extra headers)

unix:INCLUDEPATH += $$quote(/home/user/extra headers)

INSTALLS

这个变量包含的是当执行 make install 或者类似的安装过程时要安装的资源的列表。典型地,对这个列表中的每个条目都会定义一些属性,这些属性指示了要将它安装到哪里。

例如,下面的 target.path 定义描述了要将构建目标安装到哪里,而对 INSTALLS 的赋值将构建目标添加到待安装的资源列表中:

target.path += $$[QT_INSTALL_PLUGINS]/imageformats

INSTALLS += target

LEXIMPLS

这个变量包含一组词法实现文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

LEXOBJECTS

这个变量包含中间生成的词法对象文件的名字。这个变量的值一般是由 qmake 来控制的,极少需要修改。

LEXSOURCES

这个变量包含一组词法源代码文件。构建这些词法文件时需要的全部依赖、头文件和源代码文件都会自动添加到工程中。

例如:

LEXSOURCES = lexer.l

LIBS

这个变量包含一组要链接到项目中的库。你可以使用 Unix -l (库) -L (库路径)标志, qmake 会对 Windows Symbian 平台上的库做出正确的处理(也就是说,将库的完整路径传递给链接器)。唯一的限制是这个库必须存在,以让 qmake 找到这个 -l 库在哪个目录里。

例如:

unix:LIBS += -L/usr/local/lib -lmath

win32:LIBS += c:/mylibs/math.lib

要指定一个包含空格的路径,就用 qmake 项目文件 文档里面提到的技巧将路径包含起来。例如,在 Windows Unix 平台上,可以像下面这样使用 quote() 函数来指定包含空格的路径:

win32:LIBS += $$quote(C:/mylibs/extra libs/extra.lib)

unix:LIBS += $$quote(-L/home/user/extra libs) -lextra

注意: Windows 上,像上面的例子那样使用 -l 选项指定一些库的话,会导致使用那些库的最高版本; 例如, libmath2.lib 可能会使用来代替 libmathlib (本座觉得这里缺了个点) 。为了避免出现这种歧义,我们建议你包含 .lib 扩展名以显式地指定要使用的库。

注意: Symbian 平台上,构建系统会区分共享库和静态库。在大多数情况下, qmake 会判断出你引用的是哪个库,但是某些情况下你可能需要显式指定它,以免出现错误。一般地,如果你在构建一个库,并且在相同的项目中使用它的时候,会出现这种问题。要想指定这个库是共享的还是静态的,就对应地在库的名字后面加上 ".dll" 或者 ".lib"

默认地,在使用之前,储存在 LIBS 中的库的列表被缩减为一个唯一名字列表。要改变这一点,就将 no_lflags_merge 选项添加到 CONFIG 变量中:

CONFIG += no_lflags_merge

LITERAL_HASH

在声明一个变量,并且需要其中有字面的井号( # )时,将使用本变量,比如说一个文件名里面或者是一个要传递到外部程序的字符串里面。

例如:

# 要包含一个字面的井号,就使用 $$LITERAL_HASH 变量:

urlPieces = http://qt.nokia.com/doc/4.0/qtextdocument.html pageCount

message($$join(urlPieces, $$LITERAL_HASH))

通过用这种方式使用 LITERAL_HASH , 可以使用 # 号来构造一个 URL , 它将被 message() 函数用来输出到终端上。

MAKEFILE

这个变量指定 qmake 在输出一个项目的依赖信息时应当使用的 Makefile 的名字。 这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

MAKEFILE_GENERATOR

这个变量包含了在生成 Makefile 时使用的 Makefile 生成器的名字。这个变量的值一般是由 qmake 来内部控制的,极少需要修改。

MMP_RULES

这个变量只在 Symbian 平台上使用。

可以使用这个变量来指定通用 MMP 文件的内容。

例如:

MMP_RULES += "DEFFILE hello.def"

这会将指定的语句添加到生成的 MMP 文件的末尾。

也可以在单个语句块里面添加多行。每个用双引号括起来的字符串都会放置在生成的 MMP 文件里面新的一行。

例如:

myBlock =

"START RESOURCE foo.rss"

"TARGET bar"

"TARGETPATH private10001234"

"HEADER"

"LANG 01"

"UID 0x10002345 0x10003456"

"END"

MMP_RULES += myBlock

如果你需要在 MMP_RULES 语句中包含一个井号 ( # ), 那么可以按照下面的方法使用 LITERAL_HASH 变量来实现 :

myIfdefBlock =

"$${LITERAL_HASH}ifdef WINSCW"

"DEFFILE hello_winscw.def"

"$${LITERAL_HASH}endif"

MMP_RULES += myIfdefBlock

还有一个叫做 addMMPRules 的便利函数,可以用来添加有条件的规则。假设你需要特定的功能,以依据不同的架构来使用不同的库。这可以按照下面的方法使用 addMMPRules 来指定:

# 设置有条件的库

LIB.MARM = "LIBRARY myarm.lib"

LIB.WINSCW = "LIBRARY mywinscw.lib"

LIB.default = "LIBRARY mydefault.lib"

# 添加有条件的 MMP 规则

MYCONDITIONS = MARM WINSCW

MYVARIABLES = LIB

addMMPRules(MYCONDITIONS, MYVARIABLES)

注意: 你不应当使用这个变量来添加那些由它们自己的变量显式支持的 MMP 语句,比如说 TARGET.EPOCSTACKSIZE 。这样做可能会导致在 MMP 文件里有重复语句。

MOC_DIR

这个变量指定放置所有的中间 moc 文件的目录。

例如:

unix:MOC_DIR = ../myproject/tmp

win32:MOC_DIR = c:/myproject/tmp

OBJECTS

这个变量是根据 SOURCES 变量生成的。每个源代码文件的扩展名将会被 .o (Unix) 或者 .obj (Win32) 代替。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

OBJECTS_DIR

这个变量指定放置所有的中间对象的目录。

例如:

unix:OBJECTS_DIR = ../myproject/tmp

win32:OBJECTS_DIR = c:/myproject/tmp

OBJMOC

qmake 找到包含 Q_OBJECT 宏的文件之后,会设置这个变量。 OBJMOC 包含全部的中间 moc 对象文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

POST_TARGETDEPS

target 依赖的所有的库都可以在这个变量里列出。某些后端不支持这个 , 这些后端包括 MSVC Dsp ProjectBuilder .pbproj 文件。一般地 , 这一点是由构建工具内部支持的 , 这对于显式列出依赖的静态库很有用。

这个列表会接在所有的内置(以及 $$PRE_TARGETDEPS )依赖之后。

PRE_TARGETDEPS

target 依赖的所有的库都可以在这个变量里列出。某些后端不支持这个 , 这些后端包括 MSVC Dsp ProjectBuilder .pbproj 文件。一般地 , 这一点是由构建工具内部支持的 , 这对于显式列出依赖的静态库很有用。

这个列表会出现在所有的内置依赖之前。

PRECOMPILED_HEADER

这个变量指示的是 , 为了加快一个项目的编译速度而创建预编译的头文件时使用的头文件。预编译头文件当前只有某些平台支持 (Windows - 所有的 MSVC 项目类型 ,Mac OS X - Xcode, Makefile, Unix - gcc 3.3 及以后版本 )

在其它平台,这个变量有不同的意义,下面指出。

这个变量包含一组需要某种预编译步骤(例如 moc )的头文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

PWD

这个变量包含当前的 qmake 项目文件 (project.pro) 所在的完整路径。

OUT_PWD

这个变量包含 qmake 放置生成的 Makefile 的目录的完整路径。

QMAKE

这个变量包含 qmake 程序自己的名字,它被放置到生成的 Makefiles 里。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKESPEC

这个变量包含了在生成 Makefile 时使用的 qmake 配置文件的名字。这个变量的值一般是由 qmake 来控制的,极少需要修改。

使用 QMAKESPEC 环境变量来覆盖 qmake 配置。注意,由于 qmake 读取项目文件的方式,因此在项目文件里面设置 QMAKESPEC 环境变量将不起作用。

QMAKE_APP_FLAG

除非设置了 app 作为 TEMPLATE ,否则这个变量是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。你可以换用下面的方式:

app {

# 针对 'app' 模板的条件代码

}

QMAKE_APP_OR_DLL

除非设置了 app 或者 dll 作为 TEMPLATE ,否则这个变量是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_AR_CMD

这个变量只在 Unix 平台使用。

这个变量包含用来调用那个创建、修改和提取归档的程序的命令。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_BUNDLE_DATA

这个变量用来储存将要与一个库包一起安装的数据,它经常被用来指定一组头文件。

例如,下面的这几行,将 path/to/header_one.h path/to/header_two.h 添加到一个包含了关于这个框架中提供的头文件的信息的组里面:

FRAMEWORK_HEADERS.version = Versions

FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h

FRAMEWORK_HEADERS.path = Headers

QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS

最后的一行将那些头文件的信息添加到要与库包一起安装的资源集合里面。

lib_bundle 选项被添加到 CONFIG 变量中时,将会创建库包。

查看 qmake 平台注意事项 ,以了解更多关于创建库包的信息。

这个变量只在 Mac OS X 上使用。

QMAKE_BUNDLE_EXTENSION

这个变量定义了用于库包的扩展名。这允许使用自定义的扩展名来创建框架,而不是使用标准的目录扩展名 .framework

例如,下面的定义将产生一个拥有扩展名 .myframework 的框架:

QMAKE_BUNDLE_EXTENSION = .myframework

这个变量只在 Mac OS X 上使用。

QMAKE_CC

这个变量指定的是在构建包含 C 源代码的项目时使用的 C 编译器。只要编译器的可执行程序在处理 Makefile 时位于 PATH 变量里的某个路径中,就只需要指定编译器的可执行文件名。

QMAKE_CFLAGS_DEBUG

这个变量包含在调试模式时用于 C 编译器的标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_MT

这个变量包含的是,你在创建多线程程序或者你链接到的 Qt 版本是一个多线程的静态链接库时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_MT_DBG

这个变量包含的是,你在创建可调试的多线程程序或者你链接到的 Qt 版本是一个可调试的多线程的静态链接库时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_MT_DLL

这个变量只用于 Windows

这个变量包含的是,你在创建多线程动态链接库或者你链接到的 Qt 版本是一个多线程的动态链接库时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_MT_DLLDBG

这个变量只用于 Windows

这个变量包含的是,你在创建可调试的多线程动态链接库或者你链接到的 Qt 版本是一个多线程的静态链接库(原文是指静态链接库,本座认为这里应当是动态链接库)时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_RELEASE

这个变量包含的是创建一个不可调试的程序时所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_SHLIB

这个变量只在 Unix 平台使用。

这个变量包含的是在创建共享库时使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_THREAD

这个变量包含的是在创建多线程程序时使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_WARN_OFF

如果指定了 warn_off 这个 CONFIG 选项,那个本变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CFLAGS_WARN_ON

如果指定了 warn_on 这个 CONFIG 选项,那个本变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CLEAN

这个变量包含任何的除了生成的文件(例如 moc uic 生成的文件)和对象文件之外应当在执行 "make clean" 时被删除的文件。

QMAKE_CXX

这个变量指定的是在构建包含 C++ 源代码的项目时使用的 C++ 编译器。只要编译器的可执行程序在处理 Makefile 时位于 PATH 变量里的某个路径中,就只需要指定编译器的可执行文件名。

QMAKE_CXXFLAGS

这个变量包含的是在构建项目时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。针对调试和发布模式的标志可分别通过修改 QMAKE_CXXFLAGS_DEBUG QMAKE_CXXFLAGS_RELEASE 变量来调整。

注意 : Symbian 平台上 , 这个变量可用于将与架构相关的选项传递到 Symbian 构建系统中的每个编译器。例如 :

QMAKE_CXXFLAGS.CW += -O2

QMAKE_CXXFLAGS.ARMCC += -O0

要了解更多信息,就去看 qmake 平台注意事项

QMAKE_CXXFLAGS_DEBUG

这个变量包含的是创建可调试的程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_MT

这个变量包含的是创建多线程程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_MT_DBG

这个变量包含的是创建可调试的多线程程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_MT_DLL

这个变量只在 Windows 上使用。

这个变量包含的是创建多线程的动态链接库时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_MT_DLLDBG

这个变量只在 Windows 上使用。

这个变量包含的是创建可调试的多线程的动态链接库时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_RELEASE

这个变量包含的是创建程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_SHLIB

这个变量包含的是创建共享库时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_THREAD

这个变量包含的是创建多线程程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_WARN_OFF

这个变量包含的是用来关闭编译器警告的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_CXXFLAGS_WARN_ON

这个变量包含的是用来打开编译器警告的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_DISTCLEAN

这个变量的作用是在执行 make distclean 时删除附加的文件。

QMAKE_EXTENSION_SHLIB

这个变量包含的是共享库的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

注意那些与平台相关的用来修改扩展名的变量将会覆盖这个变量的内容。

QMAKE_EXT_MOC

这个变量能够修改那些被包含的 moc 文件的扩展名。

参考 文件扩展名

QMAKE_EXT_UI

这个变量能够修改设计师界面文件的扩展名。

参考 文件扩展名

QMAKE_EXT_PRL

这个变量能够修改那些创建的 PRL 文件的扩展名。

参考 文件扩展名 库依赖

QMAKE_EXT_LEX

这个变量能够修改那些传递给 lex 的文件的扩展名。

参考 文件扩展名 LEXSOURCES

QMAKE_EXT_YACC

这个变量能够修改那些传递给 yacc 的文件的扩展名。

参考 文件扩展名 YACCSOURCES

QMAKE_EXT_OBJ

这个变量能够修改生成的对象文件的扩展名。

参考 文件扩展名

QMAKE_EXT_CPP

这个变量使得将拥有这个列表中的扩展名的文件解释成 C++ 源代码文件。

参考 文件扩展名

QMAKE_EXT_H

这个变量使得将拥有这个列表中的扩展名的文件解释成 C 头文件。

参考 文件扩展名

QMAKE_EXTRA_COMPILERS

这个变量包含了已添加的附加编译器/预处理器。

参考 自定义 Makefile 输出

QMAKE_EXTRA_TARGETS

这个变量包含了已添加的附加目标。

参考 自定义 Makefile 输出

QMAKE_FAILED_REQUIREMENTS

这个变量包含的是在使用 qmake 时没有满足的依赖的列表 。例如,需要 sql 模块,而它又没有被编译到 Qt 中。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_FILETAGS

这个变量包含的是需要输入到 Makefile 中去的文件标记,例如 SOURCES HEADERS 。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_FRAMEWORK_BUNDLE_NAME

在一个框架项目中,这个变量包含的是将要构建的框架的名字。

默认地,这个变量与 TARGET 变量的值相同。

参考 qmake 平台注意事项 ,以了解更多关于创建框架和库包的信息。

这个变量只在 Mac OS X 上使用。

QMAKE_FRAMEWORK_VERSION

对于构建目标是一个 Mac OS X 框架的项目,这个变量用于指定要构建的框架的版本号。

默认地,这个变量与 VERSION 变量的值相同。

参考 qmake 平台注意事项 ,以了解更多关于创建框架的信息。

这个变量只在 Mac OS X 上使用。

QMAKE_INCDIR

这个变量包含的是在构建项目时要添加到 INCLUDEPATH 中去的全部已知的头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_INCDIR_EGL

这个变量包含的是在构建拥有 OpenGL/ES 或者 OpenVG 支持的程序时要添加到 INCLUDEPATH 中去的 EGL 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_INCDIR_OPENGL

这个变量包含的是在构建拥有 OpenGL 支持的程序时要添加到 INCLUDEPATH 中去的 OpenGL 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_INCDIR_EGL 可能也需要设置。

QMAKE_INCDIR_OPENGL_ES1, QMAKE_INCDIR_OPENGL_ES2

这两个变量分别指定在构建拥有 OpenGL ES 1 或者 OpenGL ES 2 支持的程序时要添加到 INCLUDEPATH 中去的 OpenGL 头文件的位置。

这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_INCDIR_EGL 可能也需要设置。

QMAKE_INCDIR_OPENVG

这个变量包含的是在构建拥有 OpenVG 支持的程序时要添加到 INCLUDEPATH 中去的 OpenVG 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

如果这个 OpenVG 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_INCDIR_EGL 可能也需要设置。

QMAKE_INCDIR_QT

这个变量包含的是在构建一个 Qt 程序时要添加到 INCLUDEPATH 中去的全部已知的头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_INCDIR_THREAD

这个变量包含的是在构建多线程程序时要添加到 INCLUDEPATH 中去的全部已知的头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_INCDIR_X11

这个变量只在 Unix 平台使用。

这个变量包含的是在构建 X11 程序时要添加到 INCLUDEPATH 中去的 X11 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_INFO_PLIST

这个变量只在 Mac OS X 平台上使用。

这个变量指定的是你将要包含到你的 Mac OS X 程序包中去的属性列表文件 .plist 的名字。

.plist 文件中,你可以定义一些变量,例如, @EXECUTABLE@ qmake 会用实际的可执行程序的名字来替换它。其它的变量还有 @ICON@ @TYPEINFO@ @LIBRARY@ @SHORT_VERSION@

注意: 大多数时候,默认的 Info.plist 就够好咯。

QMAKE_LFLAGS

这个变量包含要传递到链接器的一组通用标志。如果你想修改用于某个特定平台或者项目类型的标志,那么就使用某个特定的变量,而不是使用这个。

QMAKE_LFLAGS_CONSOLE

这个变量只在 Windows 上使用。

这个变量包含的是构建终端程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_CONSOLE_DLL

这个变量只在 Windows 上使用。

这个变量包含的是构建终端动态链接库时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_DEBUG

这个变量包含的是构建可调试的程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_PLUGIN

这个变量包含的是构建插件时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_RPATH

这个变量只在 Unix 平台使用。

这个定义中的库路径在链接时被添加到可执行程序中,这样在运行时这些路径将会优先搜索。

QMAKE_LFLAGS_QT_DLL

这个变量包含的是构建那种将 Qt 库作为动态链接库使用的程序时的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_RELEASE

这个变量包含的是构建用于发布的程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_SHAPP

这个变量包含的是构建使用 app 模板的程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_SHLIB

这个变量包含的是构建共享库时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_SONAME

这个变量包含的是用来设置共享对象的名字的链接标志,例如 .so 或者 .dll 。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_THREAD

这个变量包含的是构建多线程项目时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_WINDOWS

这个变量只在 Windows 上使用。

这个变量包含的是在构建 Windows 图形界面项目(也就是说,没有终端的程序)时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LFLAGS_WINDOWS_DLL

这个变量只在 Windows 上使用。

这个变量包含的是在构建 Windows 动态链接库项目时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBDIR

这个变量包含的是全部已知的库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBDIR_FLAGS

这个变量只在 Unix 平台使用。

这个变量包含全部已知的库目录的位置,并且分别在前面加上 -L 前缀。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBDIR_EGL

当使用 EGL 来支持 OpenGL/ES 或者 OpenVG 时,这个变量包含的是 EGL 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBDIR_OPENGL

这个变量包含的是 OpenGL 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_LIBDIR_EGL 可能也需要设置。

QMAKE_LIBDIR_OPENVG

这个变量包含的是 OpenVG 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

如果这个 OpenVG 是使用 EGL 实现的,那么 QMAKE_LIBDIR_EGL 可能也需要设置。

QMAKE_LIBDIR_QT

这个变量包含 Qt 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBDIR_X11

这个变量只在 Unix 平台使用。

这个变量包含 X11 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS

这个变量包含整个项目的库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_CONSOLE

这个只用于 Windows 的变量不再被使用咯。

Qt 4.2 以前的版本中,这个变量被用来列出在 Windows 上构建一个终端程序时要链接的库。现在应当使用 QMAKE_LIBS_WINDOW 来代替它。

QMAKE_LIBS_EGL

当构建支持 OpenGL/ES 或者 OpenVG Qt 时,这个变量包含全部的 EGL 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。通常它的值是 -lEGL

QMAKE_LIBS_OPENGL

这个变量包含全部的 OpenGL 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么可能也需要设置 QMAKE_LIBS_EGL

QMAKE_LIBS_OPENGL_QT

这个变量包含全部的 OpenGL Qt 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES2

这个变量包含用来支持 OpenGL ES 1 OpenGL ES 2 的全部 OpenGL 库。

这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么可能也需要设置 QMAKE_LIBS_EGL

QMAKE_LIBS_OPENVG

这个变量包含全部的 OpenVG 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。通常它的值是 -lOpenVG

某些 OpenVG 引擎是建立在 OpenGL 上的。这一点将会在配置的时候探测到,并且,无论在哪里链接到了 OpenVG 库,都会把 QMAKE_LIBS_OPENGL 隐式地添加到 QMAKE_LIBS_OPENVG 中。

如果这个 OpenVG 是使用 EGL 实现的,那么可能也需要设置 QMAKE_LIBS_EGL

QMAKE_LIBS_QT

这个变量包含全部的 Qt 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_QT_DLL

这个变量只在 Windows 上使用。

Qt 是以一个动态链接库的方式构建时,这个变量包含全部的 Qt 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_QT_OPENGL

如果开启了 OpenGL 支持,那么这个变量包含需要链接到的全部库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_QT_THREAD

如果开启了多线程支持,那么这个变量包含需要链接到的全部库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_RT

这个变量只用于 Borland 编译器。

这个变量包含的是在构建一个程序时需要链接到的运行时库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_RTMT

这个变量只用于 Borland 编译器。

这个变量包含的是在构建一个多线程程序时需要链接到的运行时库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_THREAD

这个变量只用于 Unix Symbian 平台。

这个变量包含的是在构建一个多线程程序时需要链接到的全部的库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_WINDOWS

这个变量只在 Windows 上使用。

这个变量包含全部的 windows 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_X11

这个变量只在 Unix 平台使用。

这个变量包含全部的 X11 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LIBS_X11SM

这个变量只在 Unix 平台使用。

这个变量包含全部的 X11 会话管理库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

QMAKE_LIB_FLAG

如果指定了 lib 模板,那么这个变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_LINK_SHLIB_CMD

这个变量包含的是在创建一个共享库时要执行的命令。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_POST_LINK

这个变量包含的是在将 TARGET 链接起来之后要执行的命令。这个变量一般是空的,因此不执行任何东西,另外某些后端不支持这个 - 大概只有 Makefile 后端(支持还是不支持?本座不清楚)。

QMAKE_PRE_LINK

这个变量包含的是在将 TARGET 链接起来之前要执行的命令。这个变量一般是空的,因此不执行任何东西,另外某些后端不支持这个 - 大概只有 Makefile 后端。

QMAKE_LN_SHLIB

这个变量包含的是在创建到一个共享库的链接时要执行的命令。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_MAC_SDK

这个变量是在 Mac OS X 上构建统一二进制文件时使用的。在 Mac OS X 上部署程序 文档中对这个过程有更细致的描述。

QMAKE_MACOSX_DEPLOYMENT_TARGET

这个变量只有在 Mac OS X 上构建上才有效。在那个平台上,这个变量将会转发到 MACOSX_DEPLOYMENT_TARGET 环境变量,而那个是由编译器或者链接器解释的。要了解更多信息,就去看 Mac OS X 上部署程序 文档。

QMAKE_MAKEFILE

这个变量包含的是要创建的 Makefile 的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

QMAKE_MOC_SRC

这个变量记录的是要生成并且包含到项目中去的全部 moc 源文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_QMAKE

如果 qmake 不在系统路径中,那么这个变量包含它的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_QT_DLL

如果 Qt 是以动态链接库的方式构建的,那么这个变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_RESOURCE_FLAGS

这个变量用于自定义要传递到每个构建规则中使用的 资源编译器 的选项列表。例如,下面的一行确保了每次在执行 rcc -threshold -compress 选项都有特定的值:

QMAKE_RESOURCE_FLAGS += -threshold 0 -compress 9

QMAKE_RPATH

这个变量只在 Unix 平台使用。

QMAKE_LFLAGS_RPATH 等价。

QMAKE_RPATHDIR

这个变量只在 Unix 平台使用。

一个库目录路径的列表,这些路径将在链接时添加到可执行程序中,这样它们就在运行时被优先搜索。

QMAKE_RUN_CC

这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_RUN_CC_IMP

这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_RUN_CXX

这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_RUN_CXX_IMP

这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_TARGET

这个变量包含项目的目标的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

QMAKE_UIC

如果 uic 不在系统路径中,那么这个变量包含它的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

它也可以用来向 uic 指定参数,例如附加的插件路径。例如:

QMAKE_UIC = uic -L / / 插件 / 的路径

QT

储存在 QT 变量里的那些值控制着你的项目使用了哪些 Qt 模块。

下面的表格列出了可用于 QT 变量的选项,以及它们中每一个对应的功能:

选项

功能

core ( 默认包含 )

QtCore 模块

gui ( 默认包含 )

QtGui 模块

network

QtNetwork 模块

opengl

QtOpenGL 模块

phonon

Phonon 多媒体框架

sql

QtSql 模块

svg

QtSvg 模块

xml

QtXml 模块

webkit

WebKit 集成

qt3support

Qt3Support 模块

默认地, QT 包含 core gui ,确保标准的图形界面程序可以在不进行额外的配置的情况下构建。

如果你想构建一个 没有 QtGui 模块的项目,那么你需要使用 "-=" 操作符来将 gui 这个值排除;下面的一行将会导致构建一个最小化的 Qt 项目:

QT -= gui # 只使用 core 模块。

注意,向 QT 变量添加 opengl 选项会导致自动将等价的选项添加到 CONFIG 变量。因此,对于 Qt 程序,不需要将 opengl 选项同时添加到 CONFIG QT

QTPLUGIN

这个变量包含一组静态插件的名字,它们将与一个程序一起编译,这样它们就可以作为内置资源使用咯。

QT_VERSION

这个变量包含当前的 Qt 版本。

QT_MAJOR_VERSION

这个变量包含当前的 Qt 主版本号。

QT_MINOR_VERSION

这个变量包含当前的 Qt 副版本号。

QT_PATCH_VERSION

这个变量包含当前的 Qt 补丁版本号。

RC_FILE

这个变量包含程序的资源文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

RCC_DIR

这个变量指定用来放置全部的中间资源文件的目录。

例如:

unix:RCC_DIR = ../myproject/resources

win32:RCC_DIR = c:/myproject/resources

REQUIRES

这是由 qmake 处理的一个特殊变量。如果在给这个变量赋值时,这个变量中的内容没有出现在 CONFIG 中,那么将会生成一个最小化的 Makefile ,它将指明有哪些依赖(赋予 REQUIRES 的那些值)没有被满足。

这个主要用于在 Qt 的构建系统中构建那些示例。

RESOURCES

这个变量包含当前程序的资源集合文件 (qrc) 的名字。可在 Qt 资源系统 找到更多关于资源集合文件的信息。

RES_FILE

这个变量包含当前程序的资源文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

RSS_RULES

这个变量只在 Symbian 平台上使用。

可使用这个变量来指定通用的 RSS 文件内容。它的语法类似于 MMP_RULES BLD_INF_RULES

例如:

RSS_RULES += "hidden = KAppIsHidden;"

这会在生成的注册资源文件中的 APP_REGISTRATION_INFO 资源结构的末尾加上指定的语句。这个语句的结果是,这个程序将在程序组( application shell )中隐藏起来。

也可以在单个语句块里添加多行。每个双引号括起来的字符串都会被放置在 注册资源 文件中新的一行。

例如:

myrssrules =

"hidden = KAppIsHidden;"

"launch = KAppLaunchInBackground;"

RSS_RULES += myrssrules

这个例子会将程序安装到 Symbian 平台程序组中的 MyFolder 里。另外,它会令程序在后台启动。

要了解一个详细的可用的 APP_REGISTRATION_INFO 语句列表,请阅读 Symbian 平台的帮助文件。

注意 : 你不应当使用 RSS_RULES 变量来设置以下 RSS 语句 : app_file localisable_resource_file and localisable_resource_id

这些语句是由 qmake 内部处理的。

你可以将一些特殊的修饰词附加到 RSS_RULES ,以指定这条规则要写入到程序注册文件的什么地方。

修饰词

规则的位置

< 没有修饰词 >

APP_REGISTRATION_INFO 资源结构中。

.header

APP_REGISTRATION_INFO 资源结构之前。

.footer

APP_REGISTRATION_INFO 资源结构之后。

.service_list

APP_REGISTRATION_INFO service_list 里的某个 SERVICE_INFO 条目中

.file_ownership_list

APP_REGISTRATION_INFO file_ownership_list 里的某个 FILE_OWNERSHIP_INFO 条目中

.datatype_list

APP_REGISTRATION_INFO datatype_list 里的某个 DATATYPE 条目中

例如:

RSS_RULES.service_list += "uid = 0x12345678; datatype_list = {}; opaque_data = r_my_icon;"

RSS_RULES.footer +="RESOURCE CAPTION_AND_ICON_INFO r_my_icon { icon_file ="$$PWD/my_icon.svg"; }"

这个例子将会定义某个虚构的服务的服务信息,它要求向服务信息的 opaque_data 传递一个图标。

S60_VERSION

这个变量只在 Symbian 平台上使用。

包含下层的 S60 SDK 的版本号;例如 "5.0"

SIGNATURE_FILE

这个变量只在 Windows CE 上使用。

指定要用来为项目目标签名的签名文件。

注意: 这个变量会覆盖掉你在配置时使用 -signature 选项指定的设置。

SOURCES

这个变量包含当前项目中全部源代码文件的名字。

例如:

SOURCES = myclass.cpp

login.cpp

mainwindow.cpp

参考 HEADERS

SRCMOC

qmake 找到包含 Q_OBJECT 宏的文件之后,会设置这个变量。 SRCMOC 包含所有生成的 moc 文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

SUBDIRS

当与 subdirs 模板 一起使用时,这个变量包含的是那些包含了要构建的项目中的部分内容的全部子目录的名字。每个子目录都必须包含它自己的项目文件。

例如:

SUBDIRS = kernel

tools

每个子目录中的项目文件必须与子目录本身有相同的名字,这样 qmake 才能找到它。例如,如果子目录叫做 myapp ,那么那个目录中的项目文件必须叫做 myapp.pro

如果你需要确保那些子目录是按照它们被指定时的顺序来构建的 , 那么就更新 CONFIG 变量 , 使它包含 ordered 选项 :

CONFIG += ordered

可以通过向 SUBDIRS 元素提供附加的修饰词来改变 SUBDIRS 的默认行为。支持的修饰词是:

修饰词

效果

.subdir

使用指定的子目录,而不是 SUBDIRS 的值。

.file

显式指定子项目的 pro 文件。不能与 .subdir 修饰词同时使用。

.condition

指定一个 bld.inf 定义,只有当它为真时,才构建子项目。只能用于 Symbian 平台。

.depends

这个子项目依赖于指定的子项目。只能用于使用 makefile 的平台。

.makefile

子项目的 makefile 。只能用于使用 makefile 的平台。

.target

用于与这个子项目相关的 makefile 目标的基本字符串。只能用于使用 makefile 的平台。

例如 , 定义两个子目录 , 它们所在的目录都与 SUBDIRS 的值不同 , 并且其中一个子目录必须在另一个之前构建 :

SUBDIRS += my_executable my_library

my_executable.subdir = app

my_executable.depends = my_library

my_library.subdir = lib

例如,定义一个子目录,只有在 Qt Symbian 版本中构建模拟器目标的时候才构建这个子目录:

symbian {

SUBDIRS += emulator_dll

emulator_dll.condition = WINSCW

}

TARGET

这个变量指定目标文件的名字。

例如:

TEMPLATE = app

TARGET = myapp

SOURCES = main.cpp

这个项目文件将产生一个可执行文件,在 unix 上叫 myapp ,在 windows 上叫 'myapp.exe'

TARGET.CAPABILITY

这个变量只在 Symbian 平台上使用。

指定这个程序应当拥有哪些平台兼容性。要了解更多信息,请参考 Symbian SDK 文档。

TARGET.EPOCALLOWDLLDATA

这个变量只在 Symbian 平台上使用。

指定在程序中是否允许静态数据。为了节约内存 ,Symbian 默认禁止了这个。要使用它 , 就把这个变量设置成 1

TARGET.EPOCHEAPSIZE

这个变量只在 Symbian 平台上使用。

指定程序的堆的大小的最小值和最大值。当程序启动时,如果可用的堆内存没有达到最小值,那么它拒绝运行。例如:

TARGET.EPOCHEAPSIZE = 10000 10000000

TARGET.EPOCSTACKSIZE

这个变量只在 Symbian 平台上使用。

指定程序的栈大小的最大值。例如:

TARGET.EPOCSTACKSIZE = 0x8000

TARGET.SID

这个变量只在 Symbian 平台上使用。

指定为目标程序或者库使用哪个安全标识符。要了解更多信息,就去看 Symbian SDK 文档。

TARGET.UID2

这个变量只在 Symbian 平台上使用。

指定为目标程序或者库使用哪个唯一标识符 2 。如果没有指定这个变量,那么它默认使用 TARGET.UID3 的值。要了解更多信息,就去看 Symbian SDK 文档。

TARGET.UID3

这个变量只在 Symbian 平台上使用。

指定为目标程序或者库使用哪个唯一标识符 3 。如果没有指定这个变量 , 那么就会自动生成一个适合于开发和调试的 UID3 。然而 , 发布出去的程序总是应当定义这个变量。要了解更多信息 , 就去看 Symbian SDK 文档。

TARGET.VID

这个变量只在 Symbian 平台上使用。

指定为目标程序或者库使用哪个厂商标识符。要了解更多信息,就去看 Symbian SDK 文档。

TARGET_EXT

这个变量指定目标的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

TARGET_x

这个变量为目标指定一个带有主版本号的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

TARGET_x.y.z

这个变量为目标指定一个带有版本号的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

TEMPLATE

这个变量包含的是生成项目时使用的模板的名字。允许的值是:

选项

描述

app

创建一个用于构建程序的 Makefile (默认情况)。(参考 qmake 普通项目 以了解更多信息。)

lib

创建一个用于构建库的 Makefile 。(参考 qmake 普通项目 以了解更多信息。)

subdirs

创建一个用于构建子目录中的目标的 Makefile 。那些子目录由 SUBDIRS 变量指定。

vcapp

只用于 Windows 创建一个用于 Visual Studio 的程序项目。 ( 参考 qmake 平台注意事项 以了解更多信息。 )

vclib

只用于 Windows 创建一个用于 Visual Studio 的库项目。(参考 qmake 平台注意事项 以了解更多信息。)

例如:

TEMPLATE = lib

SOURCES = main.cpp

TARGET = mylib

可以通过使用命令行选项 -t 指定一个新的模板类型来覆盖这里的模板。这样做 , 将会在 .pro 文件处理 完了之后 覆盖模板类型。对于使用模板类型来确定该如何构建当前项目的 .pro 文件来说 , 有必要在命令行声明 TEMPLATE , 而不是使用 -t 选项。

TRANSLATIONS

这个变量包含的是一组翻译文件( .ts ),它们包含的是将用户界面文字翻译成非母语语言的信息。

参考 Qt 语言家手册 以了解更多关于在中进行国际化( i18n )和本地化( l10n )的信息。

UICIMPLS

这个变量包含的是一组由 UIC 生成的实现文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

UICOBJECTS

这个变量是根据 UICIMPLS 变量生成的。每个文件的扩展名会被 .o (Unix) 或者 .obj (Win32) 替换。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

UI_DIR

这个变量指定放置 uic 的所有中间文件的目录。这个变量会覆盖 UI_SOURCES_DIR UI_HEADERS_DIR

例如:

unix:UI_DIR = ../myproject/ui

win32:UI_DIR = c:/myproject/ui

UI_HEADERS_DIR

这个变量指定放置(由 uic 生成的)所有的声明文件的目录。

例如:

unix:UI_HEADERS_DIR = ../myproject/ui/include

win32:UI_HEADERS_DIR = c:/myproject/ui/include

UI_SOURCES_DIR

这个变量指定放置(由 uic 生成的)所有的实现文件的目录。

例如:

unix:UI_SOURCES_DIR = ../myproject/ui/src

win32:UI_SOURCES_DIR = c:/myproject/ui/src

VERSION

如果指定了 app 模板或者 lib 模板,那么这个变量包含那个程序或者库的版本号。

例如:

VERSION = 1.2.3

VER_MAJ

如果指定了 lib 模板 ,那么这个变量包含那个库的主版本号。

VER_MIN

如果指定了 lib 模板 ,那么这个变量包含那个库的副版本号。

VER_PAT

如果指定了 lib 模板 ,那么这个变量包含那个库的补丁版本号。

VPATH

这个变量告诉 qmake 到哪里去找它打不开的文件。使用这个变量,你可以告诉 qmake 到哪里去找像 SOURCES 这样的东西,而且如果它在 SOURCES 里面找到一个无法打开的条目,那么它会在整个 VPATH 列表中查找,以检查它是否可以自己找到那个文件。

参考 DEPENDPATH

YACCIMPLS

这个变量包含一组 yacc 源代码文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。

YACCOBJECTS

这个变量包含一组 yacc 对象文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。

YACCSOURCES

这个变量指定一组要包含到项目中去的 yacc 源代码文件。所有的依赖、头文件和源代码文件都会自动包含到项目中。

例如:

YACCSOURCES = moc.y

_PRO_FILE_

这个变量包含正在使用的项目文件的路径。

例如,下面的这行导致将项目文件的位置输出到终端:

message($$_PRO_FILE_)

_PRO_FILE_PWD_

这个变量包含的是到 那个包含正在使用的项目文件的目录的路径。

例如,下面的这行导致将 那个包含正在使用的项目文件的目录的路径输出到终端:

message($$_PRO_FILE_PWD_)

Your opinions
Your name:Email:Website url:Opinion content: