qmake将项目中的文件信息扩展为Makefile,该Makefile执行编译和链接所需的命令。
项目描述
项目由项目文件(.pro
)的内容描述。qmake使用文件中的信息生成构建项目所需的命令的Makefile。项目文件通常由以下部分构成:
- 源文件列表
- 头文件列表
- 常规配置信息
- 特定于应用程序的详细信息,如链接库列表或路径
项目文件可以包含许多不同的元素,包括注释、变量声明、内置函数和一些简单的控制结构。在大多数简单的项目中,只需要使用一些基本的配置选项来声明用于构建项目的源文件和头文件。
构建项目
对于简单的项目,只需要在项目的顶级目录中运行 qmake 即可生成 Makefile。然后,make
根据 Makefile 运行平台的工具来构建项目。
使用第三方库
Qt 源代码包包括第三方库。要设置 Qt 是使用系统版本的库还是使用捆绑版本,需要在要配置的库名称之前传递-system或-qt 。
库名词 | Qt捆绑库 | 系统库 |
---|---|---|
zlib | -qt-zlib | -system-zlib |
libjpeg | -qt-libjpeg | -system-libjpeg |
libpng | -qt-libpng | -system-libpng |
freetype | -qt-freetype | -system-freetype |
PCRE | -qt-pcre | -system-pcre |
HarfBuzz-NG | -qt-harfbuzz | -system-harfbuzz |
预编译头文件
在大型项目中,可以利用预编译的头文件来加快构建过程。
qmake 支持在某些平台和构建环境中使用预编译头文件,包括:
- Windows
- nmake
- Visual Studio projects (VS 2008 and later)
- macOS, iOS, tvOS, and watchOS
- Makefile
- Xcode
- Unix
- GCC 3.4 and above
- clang
将预编译的头文件添加到项目中
预编译的标头必须包含在整个项目中稳定且静态的代码。典型的预编译头文件可能如下所示:
// Add C includes here
#if defined __cplusplus
// Add C++ includes here
#include <stdlib>
#include <iostream>
#include <vector>
#include <QApplication> // Qt includes
#include <QPushButton>
#include <QLabel>
#include "thirdparty/include/libmain.h"
#include "my_stable_class.h"
...
#endif
预编译的头文件需要将 C头文件与 C++ 头文件分开,因为 C 文件的预编译头文件可能不包含 C++ 代码。*
项目选项
在项目文件中定义PRECOMPILED_HEADER变量:
PRECOMPILED_HEADER = stable.h
针对 Windows 的 MSVC 和 g++ 规范中precompile_header默认启用。
也可以设置条件来配置预编译头文件:
precompile_header:!isEmpty(PRECOMPILED_HEADER) {
DEFINES += USING_PCH
}
网友评论