2.2 Qt之pro配置详解


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

2.2 Qt之pro配置详解

Qt使用qmake构建工具来构建工程,作用和cmake一样,生成Makefile。

Qt的pro文档则对应cmake的CMakeLists.txt。

下面讲解一下pro文档各个参数的意义和用法。

2.2.1 注释

以“#”开始,到这一行结束。 

快捷键:Ctrl + /


2.2.2 CONFIG

指定编译器选项和项目配置,值由qmake内部识别并具有特殊意义。


2.2.3 DEFINES

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

例如:

DEFINES += USE_MY_STUFF


2.2.4 FORMS

指定UI文件(参考: Qt Designer Manual)在编译前被uic处理。

所有的构建这些UI文件所需的依赖、头文件和源文件都会自动被添加到项目中。


例如:

FORMS = mydialog.ui \

        mywidget.ui \

        myconfig.ui


2.2.5 HEADERS

指定项目中所有的头文件。

qmake会自动检测是头文件的类中是否需要moc,并增加适当的依赖关系和文件到项目中,来生成和链接moc文件。

例如:

HEADERS = myclass.h \

          login.h \

          mainwindow.h


moc 全称是 Meta-Object Compiler,也就是“元对象编译器”。

Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。

这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。

因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,我们还可以看出一点,moc 的执行是在预处理器之前。因为预处理器执行之后,Q_OBJECT 宏就不存在了。


2.2.6 INCLUDEPATH

指定编译项目时应该被搜索的#include目录。

例如:

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

如果路径包含空格,需要使用引号包含。

win32:INCLUDEPATH += "C:/mylibs/extra  headers"

unix:INCLUDEPATH += "/home/user/extra  headers"



2.2.7 LIBS

指定链接到项目中的库列表。如果使用Unix -l (library) 和 -L (library path) 标志,在Windows上qmake正确处理库(也就是说,将库的完整路径传递给链接器),库必须存在,qmake会寻找-l指定的库所在的目录。

例如:

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

unix:LIBS += -L/usr/local/lib -lmath(libmath.a)


2.2.8 QT

指定项目中使用Qt的模块。

默认情况下,QT包含core和gui,以确保标准的GUI应用程序无需进一步的配置就可以构建。

如果想建立一个不包含Qt GUI模块的项目,可以使用“ -=”操作符。

下面一行将构建一个很小的Qt项目:

QT -= gui # 仅仅使用core模块


如果要创建一个界面,里面用到XML及网络相关的类,那么需要包含如下模块:

QT += core gui widgets xml network



2.2.9 SOURCES

指定项目中所有源文件。

例如:

SOURCES = myclass.cpp \

          login.cpp \

          mainwindow.cpp


2.2.10 TRANSLATIONS

指定包含用户界面翻译文本的翻译(.ts)文件列表。

例如:

TRANSLATIONS += chinese.ts english.ts



2.2.11 TARGET

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

例如:

TEMPLATE = app

TARGET = myapp

SOURCES = main.cpp


好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***