Qt Configure Options

configure 是一个命令行工具, 它确定如何为特定平台构建 Qt. 配置可以排除 Qt 中的功能, 并确定 Qt 如何构建应用程序并将其部署到主机平台上. 本页讨论一些配置选项, 但要获取完整的选项列表, 输入命令 configure -h. configure 工具应该在 Qt 源码目录运行.

除非另有说明, 本页中的命令适用于 Linux 平台. 在 macOS 和 Windows 上, 路径和目录结构不同, 因此命令会有所不同. 此外, 在 Windows 系统上, 配置脚本称为 configure.bat.

运行 configure 后, 使用所选工具链的 make 工具构建源代码.

Source, Build, and Install Directories

source 目录包含从源码包或git仓库获取的源代码. build 目录是存储与构建相关的文件 (例如, Makefile, 目标文件和其他中间文件). install 目录是安装二进制文件和库的目录, 供系统或应用程序使用.

我们建议你使用影子构建, 使用 -prefix 选项将源码目录和构建目录分离. 这样能保持 Qt 源代码树中不含构建文件和二进制文件, 这些构建文件和二进制文件存储在单独的目录中. 如果你想从同一个源码树进行多个构建, 但对于不同的配置, 此方法非常方便. 使用影子构建, 你需要在不同的目录运行 configure:


  mkdir ~/qt-build
  cd ~/qt-build
  ~/qt-source/configure -prefix /opt/Qt5.6
  qmake

使用 -prefix 选项配置, 意味着 Qt 二进制文件和库将安装到另一个目录中, 上面的示例是 /opt/Qt5.6. 运行 qmake 会在 ~/qt-build 目录中生成 Makefile, 而不是源码目录. 生成 Makefiles 后, 运行下列命令, 构建 Qt 二进制文件和库, 并安装它们:


  make
  make install

注意: 仅当 Qt 配置了 -prefix 后, 才需要执行 'make install' 步骤, 除非使用 -developer-build 配置选项, 否则这是基于 Unix 平台的默认设置. 在 Windows 上, Qt 默认设置是没有 -prefix 版本.

注意: -developer-build 选项仅用于 Qt 开发, 而不用于发布应用程序. 此类构建包含比标准构建更多的导出符号, 并且以更高的警告级别进行编译.

Including and Excluding Qt Modules

通过配置, 可以在 Qt 构建中包含或排除特定的 Qt 模块. 但是, 请记住, 许多模块依赖于其他模块, 因此, 某些构建配置可能会出现依赖性问题.

Excluding a Qt Submodule

-skip 选项允许从 Qt 构建中排除某些 Qt 子模块. 这些子模块对应于标准 Qt 5 存储库中的 Git 子模块. 注意, 许多软件包含多个 Qt 模块. 例如, 要从 Qt 构建中排除 Qt NFC 和 Qt Bluetooth, 在 configure 参数中增加 -skip qtconnectivity 选项.


  ./configure -skip qtconnectivity

Including or Excluding Features

-feature-<feature>-no-feature-<feature> 选项分别包括和排除特定功能, 其中 <feature> 在文件 qtbase/src/corelib/global/qfeatures.txt 中列出.

例如, 要禁用辅助功能 Accessibility, 参数是 -no-feature-accessibility:


  ./configure -no-feature-accessibility

注意: qtbase 之外的功能不包含在功能列表中.

Third-Party Libraries

Qt 源码包含三方库. 要设置 Qt 是否应使用系统版本的库或使用捆绑版本, 请在要配置的库名称之前传递 -system-qt.

下表总结了第三方选项:

Library NameBundled in QtInstalled in System
zlib-qt-zlib-system-zlib
libjpeg-qt-libjpeg-system-libjpeg
libpng-qt-libpng-system-libpng
xcb-qt-xcb-system-xcb
xkbcommon-qt-xkbcommon-system-xkbcommon
freetype-qt-freetype-system-freetype
PCRE-qt-pcre-system-pcre
HarfBuzz-NG-qt-harfbuzz-system-harfbuzz

还可以使用 -no 替代 -qt, 禁用某些库支持. 例如, 要使用系统的 xcb 库并禁用 zlib 支持, 请输入以下内容:


  ./configure -no-zlib -qt-libjpeg -qt-libpng -system-xcb

选项的完整列表, 参见 configure -help.

Compiler Options

-platform 选项设置构建 Qt 源代码的主机平台和编译器. 支持平台和编译器列表参见 supported platforms, 完整列表可以在 qtbase/mkspecs 目录找见.

例如, 在 Ubuntu 系统上, Qt 可以由 clang 或 g++ 等多种编译器编译:


  ./configure -platform linux-clang
  ./configure -platform linux-g++
  ./configure -platform linux-g++-32

Windows 上, 你可以使用 MinGW 或 Visual Studio 工具链编译 Qt.


  configure.bat -platform win32-g++
  configure.bat -platform win32-msvc2010

之后, 生成 Makefiles 将使用适当的编译器命令.

Cross-Compilation Options

要配置 Qt 跨平台开发和部署, 需要设置目标平台的开发工具链. 不同的 Supported Platforms 可能需要不同的配置.

常见选项有:

  • -xplatform - 目标平台. 有效的 xplatform 选项与 qtbase/mkspecs 中的 -platform 选项相同.
  • -device - 特定的设备或芯片. 兼容的设备列表可在 qtbase/mkspecs/devices 中找到. 详见 Devices.
  • -device-option - 配置额外的 qmake 变量. 如, -device-option CROSS_COMPILE=<path-to-toolchain> 根据某些设备的需求提供 CROSS_COMPILE 环境变量.

注意: 非桌面目标的工具链通常带有所谓的 sysroot, Qt需要进行针对性配置.

Specific Options for Platforms

The following pages provide guidelines on how to configure Qt for specific platform development:

OpenGL Options for Windows

在 Windows 上, Qt 可以选择使用系统 OpenGL 或 ANGLE. 默认情况下, Qt 配置为使用 ANGLE, 它与 Qt 捆绑在一起, 并依赖 DirectX SDK. ANGLE 允许运行依赖于 OpenGL 的 Qt 应用程序, 而无需安装最新的 OpenGL 库.

-opengl 选项可用于配置 Qt, 用于在目标系统上使用 OpenGL, OpenGL ES 的不同版本(是否使用 ANGLE), 或在可用的 OpenGL 实现之间动态切换.


  configure.bat -opengl desktop

对于 desktop 选项, Qt 使用 Windows 上安装的 OpenGL, 要求目标计算机上安装的 OpenGL 与应用程序兼容. -opengl 选项接受两个版本的 OpenGL ES, 即 es2(OpenGL ES 2.0) 或 es1(OpenGL ES Common Profile).


  configure.bat -opengl es2

你还可以使用 -opengl dynamic, 它使应用程序能够在运行时在可用选项之间动态切换. 有关使用动态 GL 切换的好处, 参见 Graphics Drivers.