Qt 编译方式之 qmake

作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

QMake简介

Qt 的帮助文档中对于 qmake 是这样介绍的:
在这里插入图片描述
qmake工具有助于简化不同平台上开发项目的构建过程。它自动生成生成makefile,因此创建每个makefile只需要几行信息。您可以将qmake用于任何软件项目,无论它是否使用qt编写。

qmake 是 Qt 工具包中带的一个非常方便的工具。可以用于生成 Makefile 以及各种工程文件,还可以生成 Microsoft Visual Studio 可以使用的项目文件等。 最关键的是它可以自动解决依赖关系,不用手写 Makefile,而且是跨平台的

qmake 语言

1. 注释

qmake中的注释和代码中不同,是以符号 ‘#’ 开头。
# 这是一个注释

2. QT

指定项目使用的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 这些模块

3. TARGET

指定目标文件的名称,默认情况下包含的项目文件的基本名称。

TEMPLATE = app
TARGET = myapp
SOURCES = main.cpp

此项目运行之后会生成一个可执行文件,Windows下为myapp.exe,Linux下为myapp。

4. TEMPLATE

模板变量告诉qmake为这个应用程序生成哪种makefile,有以下选项可供选择:

选项 说明
app 创建一个用于构建应用程序的Makefile(默认)
lib 创建一个用于构建库的Makefile
subdirs 创建一个用于构建目标子目录的Makefile,子目录使用SUBDIRS变量指定
aux 创建一个不建任何东西的Makefile。如果没有编译器需要被调用来创建目标,比如你的项目使用解释型语言写的,使用此功能。注:此模板类型只能用于Makefile-based生成器。特别是它不会工作在vcxproj和Xcode生成器
vcapp 仅适用于Windows。创建一个Visual Studio应用程序项目
vclib 仅适用于Windows。创建一个Visual Studio库项目

5. CONFIG

具体项目配置和编译器选项,值由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这个选项,没有影响。默认情况下,支持是禁用的

6. DEFINES

qmake添加这个变量的值作为编译器C预处理器宏(-D选项)
简单的例子:

在pro文件中添加:
DEFINES += MY_DEFINETION

在代码中使用:
#ifdef MY_DEFINETION
    // do something
#else
    // do something
#endif

7. DEF_FILE

指定要包含在项目中的.def文件
注意:此变量仅在使用应用程序模板时在Windows上使用。

8. DEPENDPATH

指定要查找以解析依赖项的所有目录的列表

9. DESTDIR

指定目标文件的放置位置
例如:DESTDIR = ../../lib

10. DISTFILES

指定要包含在dist目标中的文件列表。此功能仅受unixmake规范支持。
例如:DISTFILES += ../program.txt

11. DLLDESTDIR

指定复制目标dll的位置
注意:此变量仅适用于Windows目标。

12. EXTRA_TRANSLATIONS

指定包含将用户界面文本转换为非本机语言的转换(.ts)文件列表
与翻译不同,额外翻译中的翻译文件只能由lrelease处理,而不是lupdate。
你可以使用 CONFIG += lrelease 在构建期间自动编译文件,并且 CONFIG += lrelease embed_translations 以使它们在qt资源系统中可用。

13. FORMS

指定在编译之前由UIC处理的UI文件
构建这些UI文件所需的所有依赖项、头文件和源文件都将自动添加到项目中。
例如:

FORMS = mydialog.ui \
      mywidget.ui \
          myconfig.ui

14. GUID

指定在.vcproj文件中设置的GUID
guid通常是随机确定的。但是,如果您需要一个固定的guid,可以使用这个变量来设置它。 此变量仅特定于.vcproj文件;否则将忽略它。

15. HEADERS

定义项目的头文件
qmake自动检测头文件中的类是否需要MOC,并将适当的依赖项和文件添加到项目中,以生成和链接MOC文件。
例如:

HEADERS = myclass.h \
            login.h \
            mainwindow.h

16. ICON

此变量仅在Mac OS上用于设置应用程序图标。有关详细信息,请参阅应用程序图标文档。

17. INCLUDEPATH

指定编译项目时应搜索的包含目录
例如:INCLUDEPATH = c:/msdev/include d:/stl/include

如果是不同系统的路径,可以添加系统判断

win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"

18. INSTALLS

指定执行make install或类似安装过程时将安装的资源列表。列表中的每一项通常都用提供安装位置信息的属性定义。

例如,下面的target.path定义描述了安装生成目标的位置,而installs分配将生成目标添加到要安装的现有资源列表中:

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

19. LIBS

指定要链接到项目中的库列表
如果使用unix-l(library)和-l(library path)标志,qmake将在Windows上正确处理库(即将库的完整路径传递给链接器)。库必须存在,qmake才能找到-l lib所在的目录。
例如:

unix:LIBS += -L/usr/local/lib -lmath
win32:LIBS += c:/mylibs/math.lib

20. MOC_DIR

指定放置所有中间MOC文件的目录
例如:

unix:MOC_DIR = ../myproject/tmp
win32:MOC_DIR = c:/myproject/tmp

21. OBJECTS_DIR

指定放置所有中间对象的目录
例如:

unix:OBJECTS_DIR = ../myproject/tmp
win32:OBJECTS_DIR = c:/myproject/tmp

22. PWD

指定指向包含要分析的当前文件的目录的完整路径
这对于在编写项目文件以支持阴影生成时引用源树中的文件非常有用。
注意:不要试图覆盖这个变量的值。

23. QM_FILES_INSTALL_PATH

指定资源系统中的目录,其中.qm文件将由 CONFIG += embed_translations 提供。
默认值为:/i18n/。

24. QMAKE

指定qmake程序本身的名称,并将其放置在生成的makefiles中
此变量的值通常由qmake或qmake.conf处理,很少需要修改。

25. QTPLUGIN

指定要与应用程序链接的静态qt插件的名称列表,以便它们作为内置资源可用
qmake自动添加所用qt模块通常需要的插件。
当链接到Qt的共享/动态构建或链接库时,此变量当前不起作用。它可以在以后用于动态插件的部署。

26. RC_FILE

指定应用程序的资源文件名
此变量的值通常由qmake或qmake.conf处理,很少需要修改。

27. RC_ICONS

指定应包含在生成的.rc文件中的图标
仅限Windows。仅当未设置rc_file和res_file变量时才使用此选项。

28. RCC_DIR

指定qt资源编译器输出文件的目录

unix:RCC_DIR = ../myproject/resources
win32:RCC_DIR = c:/myproject/resources

29. REQUIRES

指定作为条件计算的值列表
如果任何条件都是错误的,那么在构建时qmake将跳过此项目(及其子项目)。
注意:如果希望在生成时跳过项目或子项目,建议使用requires()函数

30. RESOURCES

指定目标的资源收集文件(qrc)的名称

31. SOURCES

指定项目中所有源文件的名称

发布了61 篇原创文章 · 获赞 218 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34139994/article/details/98473231
今日推荐