Qt 配置选项

configure 是一个命令行工具,它支持您从源代码构建自定义版本的 Qt。它是主要 Qt 源目录的一部分。

从 Qt 6 开始,configure 成为了 cmake 的包装器。也可以直接调用 CMake。configure 提供了额外的错误检查和与 Qt 5 的兼容性。

本页面讨论了一些配置选项。要查看全部选项列表,请输入命令 configure -h

注意:除非另有说明,本页面中的命令适用于 Linux 平台。在 macOS 和 Windows 上,PATH 和目录结构不同,因此命令会有所变化。此外,在 Windows 系统上,configure 脚本叫做 configure.bat。

配置流程

configure 必须在一个已准备好构建环境的地方调用,在这个环境中 CMake、编译器和所需的构建工具都能轻松访问。《构建 Qt 源》按平台列出了这些依赖项。

设置这种环境后,典型的流程是创建一个单独的构建目录,然后首先运行 configure,然后构建 Qt,最后安装 Qt。

~/qt-source/configure
cmake --build . --parallel
cmake --install .

您可能想尝试不同的配置选项,因此可能需要多次运行 configure。请注意,CMake 会将配置选项和与环境相关的信息缓存到名为 CMakeCache.txt 的文件中。如果您想从头开始不使用缓存信息,请删除此文件。

源目录、构建目录和安装目录

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

建议使用影子构建和 -prefix 选项来保持这些目录分开,这可以使用单独的目录来保持 Qt 的 树清洁,构建工件和二进制文件存储在单独的目录中。如果您想要从同一源树构建多个配置,此方法非常方便。要影子构建,请从单独的目录运行 configure。

mkdir ~/qt-build
cd ~/qt-build
~/qt-source/configure -prefix /opt/Qt6

使用 -prefix 选项进行配置意味着 Qt 的二进制文件和库被安装到另一个目录中,在本例中是 /opt/Qt6。

示例、测试和工具

默认情况下,configure 只配置 Qt 的库和工具。您可以使用 -make examples-make tests 来构建 Qt 伴随的示例或测试。

~/qt-source/configure -make examples -make tests

您还可以配置 Qt,使得示例、测试和工具被配置,但默认情况下不会构建。如果将 CMake 变量 QT_BUILD_EXAMPLES_BY_DEFAULTQT_Build_TESTS_BY_DEFAULTQT_BUIL_TOOLS_BY_DEFAULT 设置为 OFF,相应的部分将不会通过 cmake --build . 构建。相反,CMake 将生成您可以单独构建的单个目标。

在这里,我们构建 Qt 库和工具,也构建了 NotePad 示例

~/qt-source/configure -make examples -- -D QT_NO_MAKE_EXAMPLES=ON
cmake --build . --parallel
cmake --build . --parallel --target notepad

注意:默认情况下,-developer-build选项会构建测试。另请参阅下文的《开发者构建》。

构建配置

您可以根据不同的使用场景构建Qt库和工具,每个变种都进行了优化。

调试和发布构建

-release告诉编译器优化代码,而不为Qt及其工具提供额外的调试符号。

-debug跳过一些优化,以便更容易调试Qt及其工具。此选项还启用了生成调试符号,这使得您可以在调试器中检查已构建库的代码和状态。

最后,-debug-and-release允许一次性构建Qt库的调试和发布变种。这仅适用于您为Windows配置了构建。

还有进一步调整配置的选项。

  • -force-debug-info:创建带有调试信息的发布构建。
  • -separate-debug-info:将调试信息提取到单独的文件中。
  • -optimize-size:优化发布构建的大小而不是速度。

静态和共享构建

Qt模块可以构建为单独的库,可执行文件在启动时连接和加载(对于Qt库),或运行时(对于Qt插件)。这称为共享构建,是大多数平台上的默认配置。匹配的配置选项是-dynamic

您还可以构建Qt,以便可执行二进制文件将包含它所连接的所有Qt模块以及它所需要的所有Qt插件。这称为静态构建,可以在使用-static选项配置时选择。

CMake生成器

配置时,您可以选择一个CMake生成器。请注意,CMake支持无法与Qt一起使用的生成器。因此,配置会自动为您选择生成器。

如果可用的ninja可执行文件,configure总是使用Ninja生成器和构建工具。Ninja既跨平台又功能丰富,性能出色,所有平台都推荐使用。使用其他生成器可能可行,但未得到官方支持。

模块和功能

Qt由不同的模块组成,其源代码位于顶级源目录的不同目录中。用户可以显式排除特定的顶级目录以限制构建时间。此外,每个Qt模块可能还具有可以显式启用或禁用的功能。

排除Qt模块

configure-skip选项允许排除顶级源目录以从Qt构建中排除。请注意,某些目录包含多个Qt模块。例如,要排除Qt Wayland Compositor和Qt Wayland集成插件,请将-skip qtwayland作为配置的选项提供。

~/qt-source/configure -skip qtwayland

包括或排除功能

-feature-<feature>-no-feature-<feature>选项分别包括和排除特定的功能。

例如,您可以使用-no-feature-accessibility配置选项来禁用Qt中的无障碍性支持。

~/qt-source/configure -no-feature-accessibility

使用configure -list-features在命令行上显示所有可用的功能列表。请注意,功能可能依赖于其他功能,因此禁用功能可能会对其他功能有副作用。

第三方库

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

您还可以使用-no而不是-qt来禁用大部分这些库的支持。

Qt 6中的configure使用CMake来定位第三方库。它通过检查各种系统路径来实现。如果您在其他地方安装了库,您可以通过设置或扩展CMAKE_PREFIX_PATH变量来让CMake知道。

要查看完整选项列表,请使用configure -help查看帮助。

SSL

Qt网络可以配置为支持安全套接字层(SSL)通信,但自身不实现实际的算法。它需要利用其他库。

在Windows上,Qt可以使用系统的安全通道库来实现这一目的(配置选项-schannel)。在macOS和iOS上,Qt可以配置为使用SecureTransport API(配置选项-securetransport)。

为几乎所有目标平台提供最完整的支持并由OpenSSL Toolkit(选项-openssl)提供的支持功能是最完整的。Qt需要OpenSSL 1.1.1或更高版本。

Qt可以使用三种方式配置使用OpenSSL

  • Qt网络在首次需要时加载OpenSSL库(DLL)。如果找不到,应用程序将继续运行,但不能处理SSL通信。这可以通过使用配置选项-openssl-runtime来启用。
  • Qt网络与OpenSSL库链接。如果在加载时找不到它们,则应用程序将失败。这可以通过使用配置选项-openssl-linked来启用。
  • Qt网络针对OpenSSL库的静态版本进行编译,OpenSSL成为Qt网络库的一部分。这可以通过使用配置选项openssl-linked并将变量OPENSSL_USE_STATIC_LIBS设置为ON来启用。

如果OpenSSL未安装在标准位置,因此configure找不到,请设置CMake变量OPENSSL_ROOT_DIR

有关使用SSL支持的Qt的进一步说明,请参阅安全套接字层(SSL)类

交叉编译选项

要配置Qt以进行跨平台开发和部署,您首先需要为主机机器安装匹配的Qt版本。此外,还需要为目标平台设置开发工具链。这些设置在受支持的平台中可能会有所不同。

常见的选项包括

  • -external-hostbindir - 此机器上构建的Qt工具的路径。
  • -device - 选择用于qmake配对文件的设备和mkspec。
  • -device-option - 设置额外的qmake变量。

注意:非桌面目标工具链通常包含一个名为sysroot的工具,Qt需要配置于其。

开发者构建

-developer-build配置选项是一个方便选项,它优化了构建Qt自身的构建。它不应用于构建供客户使用的Qt变体。

开发者构建的库中包含比标准构建更多的导出符号,所有Qt代码都以更高的警告级别编译。它还将默认的前缀更改为构建目录,避免在测试事物之前安装Qt,并最终默认启用Qt的自动测试编译。

重新配置现有构建

Qt构建系统基本支持使用不同的配置选项重新配置现有的Qt构建,但因其内部CMake工作方式,所以不是很健壮。

重新配置现有构建最安全的方法是将-redo选项传递给配置。这将删除构建的CMakeCache.txt文件,确保重新配置的相对安全状态。初始配置标记仍将应用于重新配置的构建。

针对特定平台的特定选项

以下页面提供了如何为特定平台开发配置Qt的指南

© 2024 Qt公司。此处包含的文档贡献是各自所有者的版权。此处提供的文档受自由软件基金会发布的GNU自由文档许可证版本1.3的规定。Qt及其相关标识是芬兰及其它国家的Qt公司的商标。所有其他商标均为其各自所有者的财产。