Qt4.7.0 文档翻译: qmake 变量参考, qmake Variable Reference
qmake 的基本行为是受那些定义了每个项目的构建过程的变量声明影响的。这些声明资源中的一部分 , 例如头文件和源代码文件 , 是每个项目都有的 ; 其它的一部分用来在特定的平台上改变编译器和链接器的行为。
平台相关的变量遵照它们扩展或者修改的变量的命名风格来命名 , 但是会在它们的名字里面包含相关的平台的名字。例如 , QMAKE_LIBS 可用来指定某个项目需要与之链接的库的列表 , 而 QMAKE_LIBS_X11 可用来扩展或者覆盖这个列表。
这个只在 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 变量指定项目的配置以及编译器的选项。这些值将被 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
}
qmake 将这个变量的值作为编译器的 C 预处理器宏( -D 选项)添加。
例如:
DEFINES += USE_MY_STUFF QT_DLL
这个选项只在 Windows 上使用 app 模板,以及 Symbian 上构建一个共享的动态链接库时使用。
指定一个要包含在项目中的 .def 文件。在 Symbian 上可以指定一个目录,在这种情况下,真正的文件是放置在 Symbian 的标准 bwins 和 eabi 目录里的。
这个变量包含的是一个目录列表 , 要查找它们的内容来解决依赖问题。在 被包含的 文件里扫描时将使用这个变量。
这个选项只用于 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"
这个变量只在 Windows CE 和 Symbian 平台上使用。
这个变量指定要部署的 Qt 插件。 Qt 中所有可用的插件都可以显式地部署到设备上。查看 静态插件 ,那里有一个完整的列表。
注意: 在 Windows CE 上,不会自动部署插件。如果程序依赖一些插件,那么这些插件需要手动指定。
注意 : 在 Symbian 平台上 , 这个变量支持的全部插件在默认情况下都会与 Qt 库一起部署 , 所以一般不需要使用这个变量。
例如:
DEPLOYMENT_PLUGIN += qjpeg
这会将 jpeg 图片格式插件上传到 Windows CE 设备上的插件目录里。
指定将 目标 文件放到哪里。 Specifies where to put the file.
例如:
DESTDIR = ../../lib
这个变量是由 qmake 内部设置的,基本上就是 DESTDIR 变量与 TARGET 变量连在一起的结果。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
指定要将 目标 动态链接库放到哪里。
这个变量指定一个要包含到发布目标中去的文件的列表。这个特性只被 UnixMake 规范支持。
例如:
DISTFILES += ../program.txt
这个变量是由 qmake 内部设置的,它指定那些用来生成 dsp 文件的 dsp 模板文件要放到哪里存储。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定在编译前要由 uic 处理的界面文件(查看 Qt Designer )。构建这些界面文件时需要的全部依赖、头文件和源代码文件都会自动添加到工程中。
例如:
FORMS = mydialog.ui
mywidget.ui
myconfig.ui
如果在你的项目里定义了 FORMS3 ,那么这个变量里面必须包含要由 uic 处理的界面文件,而不是要由 uic3 处理的。如果 CONFIG 包含 uic3 ,又没定义 FORMS3 ,那么这个变量必须只包含 uic3 类型的界面文件。
当 CONFIG 包含 uic3 时,这个变量指定要在编译之前由 uic3 处理的旧式风格的界面文件。构建这些界面文件时需要的全部依赖、头文件和源代码文件都会自动添加到工程中。
例如:
FORMS3 = my_uic3_dialog.ui
my_uic3_widget.ui
my_uic3_config.ui
指定在 .vcproj 文件里设置的 GUID 。 GUID 通常是随机确定的。然而,如果你想要一个固定的 GUID ,那么可以用这个变量来设置。
这个变量只对 .vcproj 文件有效;对其它文件,它将会忽略。
定义这个项目的头文件。
qmake 会为指定的头文件生成依赖信息(除非你通过 命令行 指定了 -nodepend )。 qmake 还会自动检测是否要为这些头文件中的类运行 moc ,并且为生成和链接这些 moc 文件而将适当的依赖和文件添加到项目中。
例如:
HEADERS = myclass.h
login.h
mainwindow.h
参考 SOURCES 。
这个变量只在 MAC 和 Symbian 平台上用来设置程序的图标。请查看 程序图标文档 ,以了解更多信息。
这个变量指定在编译项目时应当搜索的 #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)
这个变量包含的是当执行 make install 或者类似的安装过程时要安装的资源的列表。典型地,对这个列表中的每个条目都会定义一些属性,这些属性指示了要将它安装到哪里。
例如,下面的 target.path 定义描述了要将构建目标安装到哪里,而对 INSTALLS 的赋值将构建目标添加到待安装的资源列表中:
target.path += $$[QT_INSTALL_PLUGINS]/imageformats
INSTALLS += target
这个变量包含一组词法实现文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含中间生成的词法对象文件的名字。这个变量的值一般是由 qmake 来控制的,极少需要修改。
这个变量包含一组词法源代码文件。构建这些词法文件时需要的全部依赖、头文件和源代码文件都会自动添加到工程中。
例如:
LEXSOURCES = lexer.l
这个变量包含一组要链接到项目中的库。你可以使用 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 变量:
urlPieces = http://qt.nokia.com/doc/4.0/qtextdocument.html pageCount
message($$join(urlPieces, $$LITERAL_HASH))
通过用这种方式使用 LITERAL_HASH , 可以使用 # 号来构造一个 URL , 它将被 message() 函数用来输出到终端上。
这个变量指定 qmake 在输出一个项目的依赖信息时应当使用的 Makefile 的名字。 这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含了在生成 Makefile 时使用的 Makefile 生成器的名字。这个变量的值一般是由 qmake 来内部控制的,极少需要修改。
这个变量只在 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 文件的目录。
例如:
unix:MOC_DIR = ../myproject/tmp
win32:MOC_DIR = c:/myproject/tmp
这个变量是根据 SOURCES 变量生成的。每个源代码文件的扩展名将会被 .o (Unix) 或者 .obj (Win32) 代替。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定放置所有的中间对象的目录。
例如:
unix:OBJECTS_DIR = ../myproject/tmp
win32:OBJECTS_DIR = c:/myproject/tmp
qmake 找到包含 Q_OBJECT 宏的文件之后,会设置这个变量。 OBJMOC 包含全部的中间 moc 对象文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
target 依赖的所有的库都可以在这个变量里列出。某些后端不支持这个 , 这些后端包括 MSVC Dsp 和 ProjectBuilder .pbproj 文件。一般地 , 这一点是由构建工具内部支持的 , 这对于显式列出依赖的静态库很有用。
这个列表会接在所有的内置(以及 $$PRE_TARGETDEPS )依赖之后。
target 依赖的所有的库都可以在这个变量里列出。某些后端不支持这个 , 这些后端包括 MSVC Dsp 和 ProjectBuilder .pbproj 文件。一般地 , 这一点是由构建工具内部支持的 , 这对于显式列出依赖的静态库很有用。
这个列表会出现在所有的内置依赖之前。
这个变量指示的是 , 为了加快一个项目的编译速度而创建预编译的头文件时使用的头文件。预编译头文件当前只有某些平台支持 (Windows - 所有的 MSVC 项目类型 ,Mac OS X - Xcode, Makefile, Unix - gcc 3.3 及以后版本 ) 。
在其它平台,这个变量有不同的意义,下面指出。
这个变量包含一组需要某种预编译步骤(例如 moc )的头文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含当前的 qmake 项目文件 (project.pro) 所在的完整路径。
这个变量包含 qmake 放置生成的 Makefile 的目录的完整路径。
这个变量包含 qmake 程序自己的名字,它被放置到生成的 Makefiles 里。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含了在生成 Makefile 时使用的 qmake 配置文件的名字。这个变量的值一般是由 qmake 来控制的,极少需要修改。
使用 QMAKESPEC 环境变量来覆盖 qmake 配置。注意,由于 qmake 读取项目文件的方式,因此在项目文件里面设置 QMAKESPEC 环境变量将不起作用。
除非设置了 app 作为 TEMPLATE ,否则这个变量是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。你可以换用下面的方式:
app {
# 针对 'app' 模板的条件代码
}
除非设置了 app 或者 dll 作为 TEMPLATE ,否则这个变量是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含用来调用那个创建、修改和提取归档的程序的命令。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量用来储存将要与一个库包一起安装的数据,它经常被用来指定一组头文件。
例如,下面的这几行,将 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 上使用。
这个变量定义了用于库包的扩展名。这允许使用自定义的扩展名来创建框架,而不是使用标准的目录扩展名 .framework 。
例如,下面的定义将产生一个拥有扩展名 .myframework 的框架:
QMAKE_BUNDLE_EXTENSION = .myframework
这个变量只在 Mac OS X 上使用。
这个变量指定的是在构建包含 C 源代码的项目时使用的 C 编译器。只要编译器的可执行程序在处理 Makefile 时位于 PATH 变量里的某个路径中,就只需要指定编译器的可执行文件名。
这个变量包含在调试模式时用于 C 编译器的标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是,你在创建多线程程序或者你链接到的 Qt 版本是一个多线程的静态链接库时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是,你在创建可调试的多线程程序或者你链接到的 Qt 版本是一个可调试的多线程的静态链接库时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只用于 Windows 。
这个变量包含的是,你在创建多线程动态链接库或者你链接到的 Qt 版本是一个多线程的动态链接库时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只用于 Windows 。
这个变量包含的是,你在创建可调试的多线程动态链接库或者你链接到的 Qt 版本是一个多线程的静态链接库(原文是指静态链接库,本座认为这里应当是动态链接库)时,所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是创建一个不可调试的程序时所使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含的是在创建共享库时使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是在创建多线程程序时使用的编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果指定了 warn_off 这个 CONFIG 选项,那个本变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果指定了 warn_on 这个 CONFIG 选项,那个本变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含任何的除了生成的文件(例如 moc 和 uic 生成的文件)和对象文件之外应当在执行 "make clean" 时被删除的文件。
这个变量指定的是在构建包含 C++ 源代码的项目时使用的 C++ 编译器。只要编译器的可执行程序在处理 Makefile 时位于 PATH 变量里的某个路径中,就只需要指定编译器的可执行文件名。
这个变量包含的是在构建项目时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。针对调试和发布模式的标志可分别通过修改 QMAKE_CXXFLAGS_DEBUG 和 QMAKE_CXXFLAGS_RELEASE 变量来调整。
注意 : 在 Symbian 平台上 , 这个变量可用于将与架构相关的选项传递到 Symbian 构建系统中的每个编译器。例如 :
QMAKE_CXXFLAGS.CW += -O2
QMAKE_CXXFLAGS.ARMCC += -O0
要了解更多信息,就去看 qmake 平台注意事项 。
这个变量包含的是创建可调试的程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是创建多线程程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是创建可调试的多线程程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
这个变量包含的是创建多线程的动态链接库时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
这个变量包含的是创建可调试的多线程的动态链接库时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是创建程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是创建共享库时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是创建多线程程序时使用的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是用来关闭编译器警告的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是用来打开编译器警告的 C++ 编译器标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量的作用是在执行 make distclean 时删除附加的文件。
这个变量包含的是共享库的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
注意那些与平台相关的用来修改扩展名的变量将会覆盖这个变量的内容。
这个变量能够修改那些被包含的 moc 文件的扩展名。
参考 文件扩展名 。
这个变量能够修改设计师界面文件的扩展名。
参考 文件扩展名 。
这个变量能够修改那些创建的 PRL 文件的扩展名。
参考 文件扩展名 、 库依赖 。
这个变量能够修改那些传递给 lex 的文件的扩展名。
参考 文件扩展名 、 LEXSOURCES 。
这个变量能够修改那些传递给 yacc 的文件的扩展名。
参考 文件扩展名 、 YACCSOURCES 。
这个变量能够修改生成的对象文件的扩展名。
参考 文件扩展名 。
这个变量使得将拥有这个列表中的扩展名的文件解释成 C++ 源代码文件。
参考 文件扩展名 。
这个变量使得将拥有这个列表中的扩展名的文件解释成 C 头文件。
参考 文件扩展名 。
这个变量包含了已添加的附加编译器/预处理器。
参考 自定义 Makefile 输出 。
这个变量包含了已添加的附加目标。
参考 自定义 Makefile 输出 。
这个变量包含的是在使用 qmake 时没有满足的依赖的列表 。例如,需要 sql 模块,而它又没有被编译到 Qt 中。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是需要输入到 Makefile 中去的文件标记,例如 SOURCES 和 HEADERS 。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
在一个框架项目中,这个变量包含的是将要构建的框架的名字。
默认地,这个变量与 TARGET 变量的值相同。
参考 qmake 平台注意事项 ,以了解更多关于创建框架和库包的信息。
这个变量只在 Mac OS X 上使用。
对于构建目标是一个 Mac OS X 框架的项目,这个变量用于指定要构建的框架的版本号。
默认地,这个变量与 VERSION 变量的值相同。
参考 qmake 平台注意事项 ,以了解更多关于创建框架的信息。
这个变量只在 Mac OS X 上使用。
这个变量包含的是在构建项目时要添加到 INCLUDEPATH 中去的全部已知的头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是在构建拥有 OpenGL/ES 或者 OpenVG 支持的程序时要添加到 INCLUDEPATH 中去的 EGL 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是在构建拥有 OpenGL 支持的程序时要添加到 INCLUDEPATH 中去的 OpenGL 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_INCDIR_EGL 可能也需要设置。
这两个变量分别指定在构建拥有 OpenGL ES 1 或者 OpenGL ES 2 支持的程序时要添加到 INCLUDEPATH 中去的 OpenGL 头文件的位置。
这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_INCDIR_EGL 可能也需要设置。
这个变量包含的是在构建拥有 OpenVG 支持的程序时要添加到 INCLUDEPATH 中去的 OpenVG 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果这个 OpenVG 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_INCDIR_EGL 可能也需要设置。
这个变量包含的是在构建一个 Qt 程序时要添加到 INCLUDEPATH 中去的全部已知的头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是在构建多线程程序时要添加到 INCLUDEPATH 中去的全部已知的头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含的是在构建 X11 程序时要添加到 INCLUDEPATH 中去的 X11 头文件的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Mac OS X 平台上使用。
这个变量指定的是你将要包含到你的 Mac OS X 程序包中去的属性列表文件 .plist 的名字。
在 .plist 文件中,你可以定义一些变量,例如, @EXECUTABLE@ , qmake 会用实际的可执行程序的名字来替换它。其它的变量还有 @ICON@ 、 @TYPEINFO@ 、 @LIBRARY@ 和 @SHORT_VERSION@ 。
注意: 大多数时候,默认的 Info.plist 就够好咯。
这个变量包含要传递到链接器的一组通用标志。如果你想修改用于某个特定平台或者项目类型的标志,那么就使用某个特定的变量,而不是使用这个。
这个变量只在 Windows 上使用。
这个变量包含的是构建终端程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
这个变量包含的是构建终端动态链接库时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是构建可调试的程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是构建插件时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个定义中的库路径在链接时被添加到可执行程序中,这样在运行时这些路径将会优先搜索。
这个变量包含的是构建那种将 Qt 库作为动态链接库使用的程序时的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是构建用于发布的程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是构建使用 app 模板的程序时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是构建共享库时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是用来设置共享对象的名字的链接标志,例如 .so 或者 .dll 。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是构建多线程项目时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
这个变量包含的是在构建 Windows 图形界面项目(也就是说,没有终端的程序)时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
这个变量包含的是在构建 Windows 动态链接库项目时使用的链接标志。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是全部已知的库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含全部已知的库目录的位置,并且分别在前面加上 -L 前缀。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
当使用 EGL 来支持 OpenGL/ES 或者 OpenVG 时,这个变量包含的是 EGL 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是 OpenGL 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么 QMAKE_LIBDIR_EGL 可能也需要设置。
这个变量包含的是 OpenVG 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
如果这个 OpenVG 是使用 EGL 实现的,那么 QMAKE_LIBDIR_EGL 可能也需要设置。
这个变量包含 Qt 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含 X11 库目录的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含整个项目的库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个只用于 Windows 的变量不再被使用咯。
在 Qt 4.2 以前的版本中,这个变量被用来列出在 Windows 上构建一个终端程序时要链接的库。现在应当使用 QMAKE_LIBS_WINDOW 来代替它。
当构建支持 OpenGL/ES 或者 OpenVG 的 Qt 时,这个变量包含全部的 EGL 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。通常它的值是 -lEGL 。
这个变量包含全部的 OpenGL 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么可能也需要设置 QMAKE_LIBS_EGL 。
这个变量包含全部的 OpenGL Qt 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
这个变量包含用来支持 OpenGL ES 1 和 OpenGL ES 2 的全部 OpenGL 库。
这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果这个 OpenGL 是使用 EGL 实现的 ( 大多数 OpenGL/ES 系统 ), 那么可能也需要设置 QMAKE_LIBS_EGL 。
这个变量包含全部的 OpenVG 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。通常它的值是 -lOpenVG 。
某些 OpenVG 引擎是建立在 OpenGL 上的。这一点将会在配置的时候探测到,并且,无论在哪里链接到了 OpenVG 库,都会把 QMAKE_LIBS_OPENGL 隐式地添加到 QMAKE_LIBS_OPENVG 中。
如果这个 OpenVG 是使用 EGL 实现的,那么可能也需要设置 QMAKE_LIBS_EGL 。
这个变量包含全部的 Qt 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
当 Qt 是以一个动态链接库的方式构建时,这个变量包含全部的 Qt 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果开启了 OpenGL 支持,那么这个变量包含需要链接到的全部库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果开启了多线程支持,那么这个变量包含需要链接到的全部库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只用于 Borland 编译器。
这个变量包含的是在构建一个程序时需要链接到的运行时库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只用于 Borland 编译器。
这个变量包含的是在构建一个多线程程序时需要链接到的运行时库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只用于 Unix 和 Symbian 平台。
这个变量包含的是在构建一个多线程程序时需要链接到的全部的库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Windows 上使用。
这个变量包含全部的 windows 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含全部的 X11 库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 Unix 平台使用。
这个变量包含全部的 X11 会话管理库。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
如果指定了 lib 模板,那么这个变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是在创建一个共享库时要执行的命令。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是在将 TARGET 链接起来之后要执行的命令。这个变量一般是空的,因此不执行任何东西,另外某些后端不支持这个 - 大概只有 Makefile 后端(支持还是不支持?本座不清楚)。
这个变量包含的是在将 TARGET 链接起来之前要执行的命令。这个变量一般是空的,因此不执行任何东西,另外某些后端不支持这个 - 大概只有 Makefile 后端。
这个变量包含的是在创建到一个共享库的链接时要执行的命令。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量是在 Mac OS X 上构建统一二进制文件时使用的。在 在 Mac OS X 上部署程序 文档中对这个过程有更细致的描述。
这个变量只有在 Mac OS X 上构建上才有效。在那个平台上,这个变量将会转发到 MACOSX_DEPLOYMENT_TARGET 环境变量,而那个是由编译器或者链接器解释的。要了解更多信息,就去看 在 Mac OS X 上部署程序 文档。
这个变量包含的是要创建的 Makefile 的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
这个变量记录的是要生成并且包含到项目中去的全部 moc 源文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果 qmake 不在系统路径中,那么这个变量包含它的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果 Qt 是以动态链接库的方式构建的,那么这个变量就不是空的。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量用于自定义要传递到每个构建规则中使用的 资源编译器 的选项列表。例如,下面的一行确保了每次在执行 rcc 时 -threshold 和 -compress 选项都有特定的值:
QMAKE_RESOURCE_FLAGS += -threshold 0 -compress 9
这个变量只在 Unix 平台使用。
与 QMAKE_LFLAGS_RPATH 等价。
这个变量只在 Unix 平台使用。
一个库目录路径的列表,这些路径将在链接时添加到可执行程序中,这样它们就在运行时被优先搜索。
这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定了构建一个对象时使用的个别规则。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含项目的目标的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
如果 uic 不在系统路径中,那么这个变量包含它的位置。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
它也可以用来向 uic 指定参数,例如附加的插件路径。例如:
QMAKE_UIC = uic -L / 到 / 插件 / 的路径
储存在 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 。
这个变量包含一组静态插件的名字,它们将与一个程序一起编译,这样它们就可以作为内置资源使用咯。
这个变量包含当前的 Qt 版本。
这个变量包含当前的 Qt 主版本号。
这个变量包含当前的 Qt 副版本号。
这个变量包含当前的 Qt 补丁版本号。
这个变量包含程序的资源文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
这个变量指定用来放置全部的中间资源文件的目录。
例如:
unix:RCC_DIR = ../myproject/resources
win32:RCC_DIR = c:/myproject/resources
这是由 qmake 处理的一个特殊变量。如果在给这个变量赋值时,这个变量中的内容没有出现在 CONFIG 中,那么将会生成一个最小化的 Makefile ,它将指明有哪些依赖(赋予 REQUIRES 的那些值)没有被满足。
这个主要用于在 Qt 的构建系统中构建那些示例。
这个变量包含当前程序的资源集合文件 (qrc) 的名字。可在 Qt 资源系统 找到更多关于资源集合文件的信息。
这个变量包含当前程序的资源文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量只在 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 传递一个图标。
这个变量只在 Symbian 平台上使用。
包含下层的 S60 SDK 的版本号;例如 "5.0" 。
这个变量只在 Windows CE 上使用。
指定要用来为项目目标签名的签名文件。
注意: 这个变量会覆盖掉你在配置时使用 -signature 选项指定的设置。
这个变量包含当前项目中全部源代码文件的名字。
例如:
SOURCES = myclass.cpp
login.cpp
mainwindow.cpp
参考 HEADERS
qmake 找到包含 Q_OBJECT 宏的文件之后,会设置这个变量。 SRCMOC 包含所有生成的 moc 文件的名字。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
当与 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
}
这个变量指定目标文件的名字。
例如:
TEMPLATE = app
TARGET = myapp
SOURCES = main.cpp
这个项目文件将产生一个可执行文件,在 unix 上叫 myapp ,在 windows 上叫 'myapp.exe' 。
这个变量只在 Symbian 平台上使用。
指定这个程序应当拥有哪些平台兼容性。要了解更多信息,请参考 Symbian SDK 文档。
这个变量只在 Symbian 平台上使用。
指定在程序中是否允许静态数据。为了节约内存 ,Symbian 默认禁止了这个。要使用它 , 就把这个变量设置成 1 。
这个变量只在 Symbian 平台上使用。
指定程序的堆的大小的最小值和最大值。当程序启动时,如果可用的堆内存没有达到最小值,那么它拒绝运行。例如:
TARGET.EPOCHEAPSIZE = 10000 10000000
这个变量只在 Symbian 平台上使用。
指定程序的栈大小的最大值。例如:
TARGET.EPOCSTACKSIZE = 0x8000
这个变量只在 Symbian 平台上使用。
指定为目标程序或者库使用哪个安全标识符。要了解更多信息,就去看 Symbian SDK 文档。
这个变量只在 Symbian 平台上使用。
指定为目标程序或者库使用哪个唯一标识符 2 。如果没有指定这个变量,那么它默认使用 TARGET.UID3 的值。要了解更多信息,就去看 Symbian SDK 文档。
这个变量只在 Symbian 平台上使用。
指定为目标程序或者库使用哪个唯一标识符 3 。如果没有指定这个变量 , 那么就会自动生成一个适合于开发和调试的 UID3 。然而 , 发布出去的程序总是应当定义这个变量。要了解更多信息 , 就去看 Symbian SDK 文档。
这个变量只在 Symbian 平台上使用。
指定为目标程序或者库使用哪个厂商标识符。要了解更多信息,就去看 Symbian SDK 文档。
这个变量指定目标的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量为目标指定一个带有主版本号的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量为目标指定一个带有版本号的扩展名。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量包含的是生成项目时使用的模板的名字。允许的值是:
|
选项 |
描述 |
|
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 选项。
这个变量包含的是一组翻译文件( .ts ),它们包含的是将用户界面文字翻译成非母语语言的信息。
参考 Qt 语言家手册 以了解更多关于在中进行国际化( i18n )和本地化( l10n )的信息。
这个变量包含的是一组由 UIC 生成的实现文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量是根据 UICIMPLS 变量生成的。每个文件的扩展名会被 .o (Unix) 或者 .obj (Win32) 替换。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定放置 uic 的所有中间文件的目录。这个变量会覆盖 UI_SOURCES_DIR 和 UI_HEADERS_DIR 。
例如:
unix:UI_DIR = ../myproject/ui
win32:UI_DIR = c:/myproject/ui
这个变量指定放置(由 uic 生成的)所有的声明文件的目录。
例如:
unix:UI_HEADERS_DIR = ../myproject/ui/include
win32:UI_HEADERS_DIR = c:/myproject/ui/include
这个变量指定放置(由 uic 生成的)所有的实现文件的目录。
例如:
unix:UI_SOURCES_DIR = ../myproject/ui/src
win32:UI_SOURCES_DIR = c:/myproject/ui/src
如果指定了 app 模板或者 lib 模板,那么这个变量包含那个程序或者库的版本号。
例如:
VERSION = 1.2.3
如果指定了 lib 模板 ,那么这个变量包含那个库的主版本号。
如果指定了 lib 模板 ,那么这个变量包含那个库的副版本号。
如果指定了 lib 模板 ,那么这个变量包含那个库的补丁版本号。
这个变量告诉 qmake 到哪里去找它打不开的文件。使用这个变量,你可以告诉 qmake 到哪里去找像 SOURCES 这样的东西,而且如果它在 SOURCES 里面找到一个无法打开的条目,那么它会在整个 VPATH 列表中查找,以检查它是否可以自己找到那个文件。
参考 DEPENDPATH 。
这个变量包含一组 yacc 源代码文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的 , 极少需要修改。
这个变量包含一组 yacc 对象文件。这个变量的值一般是由 qmake 或者 qmake.conf 来控制的,极少需要修改。
这个变量指定一组要包含到项目中去的 yacc 源代码文件。所有的依赖、头文件和源代码文件都会自动包含到项目中。
例如:
YACCSOURCES = moc.y
这个变量包含正在使用的项目文件的路径。
例如,下面的这行导致将项目文件的位置输出到终端:
message($$_PRO_FILE_)
这个变量包含的是到 那个包含正在使用的项目文件的目录的路径。
例如,下面的这行导致将 那个包含正在使用的项目文件的目录的路径输出到终端:
message($$_PRO_FILE_PWD_)
Your opinionsHxLauncher: Launch Android applications by voice commands