赞
踩
作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
Qt 的帮助文档中对于 qmake 是这样介绍的:
qmake工具有助于简化不同平台上开发项目的构建过程。它自动生成生成makefile,因此创建每个makefile只需要几行信息。您可以将qmake用于任何软件项目,无论它是否使用qt编写。
qmake 是 Qt 工具包中带的一个非常方便的工具。可以用于生成 Makefile 以及各种工程文件,还可以生成 Microsoft Visual Studio 可以使用的项目文件等。 最关键的是它可以自动解决依赖关系,不用手写 Makefile,而且是跨平台的。
qmake中的注释和代码中不同,是以符号 ‘#’ 开头。
# 这是一个注释
指定项目使用的qt模块,在C++实现级别,使用QT模块使其头文件可用于包含,并使其与二进制连接。默认情况下,qt包含core和gui,确保无需进一步配置即可构建标准的gui应用程序。如果想要构建一个没有 qt-gui 模块的项目,需要使用 “-=” 操作符排除gui。
QT -= gui # 去除 gui 模块,只使用 core 模块
QT += core gui widgets qml network # 使用了 core gui widgets qml network 这些模块
指定目标文件的名称,默认情况下包含的项目文件的基本名称。
TEMPLATE = app
TARGET = myapp
SOURCES = main.cpp
此项目运行之后会生成一个可执行文件,Windows下为myapp.exe,Linux下为myapp。
模板变量告诉qmake为这个应用程序生成哪种makefile,有以下选项可供选择:
选项 | 说明 |
---|---|
app | 创建一个用于构建应用程序的Makefile(默认) |
lib | 创建一个用于构建库的Makefile |
subdirs | 创建一个用于构建目标子目录的Makefile,子目录使用SUBDIRS变量指定 |
aux | 创建一个不建任何东西的Makefile。如果没有编译器需要被调用来创建目标,比如你的项目使用解释型语言写的,使用此功能。注:此模板类型只能用于Makefile-based生成器。特别是它不会工作在vcxproj和Xcode生成器 |
vcapp | 仅适用于Windows。创建一个Visual Studio应用程序项目 |
vclib | 仅适用于Windows。创建一个Visual Studio库项目 |
具体项目配置和编译器选项,值由qmake内部识别并具有特殊意义。
选项 | 说明 |
---|---|
release | 项目以release模式构建。如果也指定了debug,那么最后一个生效 |
debug | 项目以debug模式构建 |
debug_and_release | 项目准备以debug和release两种模式构建 |
debug_and_release_target | 此选项默认设置。如果也指定了debug_and_release,最终的debug和release构建在不同的目录 |
build_all | 如果指定了debug_and_release,默认情况下,该项目会构建为debug和release模式 |
autogen_precompile_source | 自动生成一个.cpp文件,包含在.pro中指定的预编译头文件 |
ordered | 使用subdirs模板时,此选项指定应该按照目录列表的顺序处理它们 |
precompile_header | 可以在项目中使用预编译头文件的支持 |
warn_on | 编译器应该输出尽可能多的警告。如果也指定了warn_off,最后一个生效 |
warn_off | 编译器应该输出尽可能少的警告 |
exceptions | 启用异常支持。默认设置 |
exceptions_off | 禁用异常支持 |
rtti | 启用RTTI支持。默认情况下,使用编译器默认 |
rtti_off | 禁用RTTI支持。默认情况下,使用编译器默认 |
stl | 启用STL支持。默认情况下,使用编译器默认 |
stl_off | 禁用STL支持。默认情况下,使用编译器默认 |
thread | 启用线程支持。当CONFIG包括qt时启用,这是缺省设置 |
c++11 | 启用c++11支持。如果编译器不支持c++11这个选项,没有影响。默认情况下,支持是禁用的 |
c++14 | 启用c++14支持。如果编译器不支持c++14这个选项,没有影响。默认情况下,支持是禁用的 |
qmake添加这个变量的值作为编译器C预处理器宏(-D选项)。
简单的例子:
在pro文件中添加:
DEFINES += MY_DEFINETION
在代码中使用:
#ifdef MY_DEFINETION
// do something
#else
// do something
#endif
指定要包含在项目中的.def文件。
注意:此变量仅在使用应用程序模板时在Windows上使用。
指定要查找以解析依赖项的所有目录的列表。
指定目标文件的放置位置。
例如:DESTDIR = ../../lib
指定要包含在dist目标中的文件列表。此功能仅受unixmake规范支持。
例如:DISTFILES += ../program.txt
指定复制目标dll的位置。
注意:此变量仅适用于Windows目标。
指定包含将用户界面文本转换为非本机语言的转换(.ts)文件列表。
与翻译不同,额外翻译中的翻译文件只能由lrelease处理,而不是lupdate。
你可以使用 CONFIG += lrelease 在构建期间自动编译文件,并且 CONFIG += lrelease embed_translations 以使它们在qt资源系统中可用。
指定在编译之前由UIC处理的UI文件。
构建这些UI文件所需的所有依赖项、头文件和源文件都将自动添加到项目中。
例如:
FORMS = mydialog.ui \
mywidget.ui \
myconfig.ui
指定在.vcproj文件中设置的GUID。
guid通常是随机确定的。但是,如果您需要一个固定的guid,可以使用这个变量来设置它。 此变量仅特定于.vcproj文件;否则将忽略它。
定义项目的头文件。
qmake自动检测头文件中的类是否需要MOC,并将适当的依赖项和文件添加到项目中,以生成和链接MOC文件。
例如:
HEADERS = myclass.h \
login.h \
mainwindow.h
此变量仅在Mac OS上用于设置应用程序图标。有关详细信息,请参阅应用程序图标文档。
指定编译项目时应搜索的包含目录。
例如:INCLUDEPATH = c:/msdev/include d:/stl/include
如果是不同系统的路径,可以添加系统判断
win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"
指定执行make install或类似安装过程时将安装的资源列表。列表中的每一项通常都用提供安装位置信息的属性定义。
例如,下面的target.path定义描述了安装生成目标的位置,而installs分配将生成目标添加到要安装的现有资源列表中:
target.path += $$[QT_INSTALL_PLUGINS]/imageformats
INSTALLS += target
指定要链接到项目中的库列表。
如果使用unix-l(library)和-l(library path)标志,qmake将在Windows上正确处理库(即将库的完整路径传递给链接器)。库必须存在,qmake才能找到-l lib所在的目录。
例如:
unix:LIBS += -L/usr/local/lib -lmath
win32:LIBS += c:/mylibs/math.lib
指定放置所有中间MOC文件的目录。
例如:
unix:MOC_DIR = ../myproject/tmp
win32:MOC_DIR = c:/myproject/tmp
指定放置所有中间对象的目录。
例如:
unix:OBJECTS_DIR = ../myproject/tmp
win32:OBJECTS_DIR = c:/myproject/tmp
指定指向包含要分析的当前文件的目录的完整路径。
这对于在编写项目文件以支持阴影生成时引用源树中的文件非常有用。
注意:不要试图覆盖这个变量的值。
指定资源系统中的目录,其中.qm文件将由 CONFIG += embed_translations 提供。
默认值为:/i18n/。
指定qmake程序本身的名称,并将其放置在生成的makefiles中。
此变量的值通常由qmake或qmake.conf处理,很少需要修改。
指定要与应用程序链接的静态qt插件的名称列表,以便它们作为内置资源可用。
qmake自动添加所用qt模块通常需要的插件。
当链接到Qt的共享/动态构建或链接库时,此变量当前不起作用。它可以在以后用于动态插件的部署。
指定应用程序的资源文件名。
此变量的值通常由qmake或qmake.conf处理,很少需要修改。
指定应包含在生成的.rc文件中的图标。
仅限Windows。仅当未设置rc_file和res_file变量时才使用此选项。
指定qt资源编译器输出文件的目录。
unix:RCC_DIR = ../myproject/resources
win32:RCC_DIR = c:/myproject/resources
指定作为条件计算的值列表。
如果任何条件都是错误的,那么在构建时qmake将跳过此项目(及其子项目)。
注意:如果希望在生成时跳过项目或子项目,建议使用requires()函数
指定目标的资源收集文件(qrc)的名称。
指定项目中所有源文件的名称。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。