Qt for macOS - 从源码构建
需求
构建 Qt 需要在系统上安装 macOS 平台 SDK 和相应的工具链。您可以安装 Xcode 来获取这些,如Qt for macOS#构建环境所述。
您应该始终使用与Qt for macOS#支持的版本中列出的一样精确的 Xcode 和 SDK 版本,以确保 Qt 在您构建的配置中已过测试。
除了 Xcode 之外,您还需要确保您的路径PATH
中具有以下依赖性。
- CMake (>=3.16, >3.18.4 对于 Ninja Multi-Config, >= 3.21.1 对于静态 Qt 构建或为 Apple 平台构建)
- Ninja
如果您想要构建 Qt WebEngine 或 Qt PDF,您还需要以下附加依赖项
- Python html5lib
- Bison, Flex
- Gperf
- Node.js 版本 8 或更高(建议使用版本 12)
QDoc 依赖项
QDoc 使用 Clang 解析 C++ 代码。如果您希望手动构建 QDoc,请参阅安装 Clang 以用于 QDoc以获取具体的构建要求。
构建步骤
以下说明描述了如何从源码包中构建 Qt。您可以从此处的下载页面下载 Qt 源代码。有关更多信息,请访问Qt 入门页面。
步骤 1:解压存档
如果您还没有这样做,请解压存档。例如,如果您有 qt-everywhere-src-6.7.2.tar.xz
包,请在命令行提示符下键入以下命令
cd /tmp tar xf ~/Downloads/qt-everywhere-src-6.7.2.tar.xz
这将创建一个包含存档中文件的目录 /tmp/qt-everywhere-src-6.7.2
。
步骤 2:构建 Qt 库
要为您的机器类型配置 Qt 库,请创建一个构建目录并进入它。在此目录中运行 ./configure
脚本。
mkdir -p ~/dev/qt-build cd ~/dev/qt-build /tmp/qt-everywhere-src-6.7.2/configure
注意:configure 总是使用如果可用的 Ninja 生成器和构建工具。Ninja 是跨平台的、功能丰富的、性能良好的,并且建议在所有平台上使用。使用其他生成器可能可行,但不受官方支持。
默认情况下,Qt 配置为安装到 /usr/local/6.7.2
目录中,但可以使用 -prefix
选项进行更改。
默认情况下,Qt 是作为一个框架构建的,但你可以通过指定 -no-framework
选项将其构建为一系列动态库(dylib)。
如Qt for macOS#Architectures 中所述,Qt 默认会根据您的开发机的架构进行构建。要配置同时支持英特尔和苹果硅 Mac 的 Qt 的通用构建,请添加以下参数
./configure -- -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
注意: 通用构建始终需要包含您的开发机的架构,因为此过程依赖于作为整体构建的一部分在您的机器上构建和运行的工具。
请注意首先指定英特尔架构("x86_64"),否则 Qt 可能无法启用所有 x86 功能。
Qt 还可以配置为构建时包含调试符号。此过程在调试技术 文档中有详细描述。
配置选项 页面包含有关配置选项的更多信息。
要创建库和编译所有示例和工具,键入
cmake --build . --parallel
如果 -prefix
在构建目录之外,则需要将库、示例和工具安装到适当的位置。为此,请键入
cmake --install .
此命令需要您在机器上拥有管理员权限。
第 3 步:设置环境变量
为了使用 Qt,一些环境变量需要扩展。
PATH - to locate qmake, moc and other Qt tools
操作方法如下
在 .profile
(如果您的 shell 是 bash)或 .zshenv
(对于 zsh)中添加以下行
PATH=/usr/local/Qt-%VERSION%/bin:$PATH export PATH
在 .login
(如果您的 shell 是 csh 或 tcsh)中添加以下行
setenv PATH /usr/local/Qt-%VERSION%/bin:$PATH
如果您使用的是不同的 shell,请相应地修改您的环境变量。
Qt 现已安装。
© 2024 The Qt Company Ltd. 包含在此处的文档贡献的版权分别属于其所有者。此处提供的相关文档是根据 Free Software Foundation 发布的 GNU 自由文档许可证版本 1.3 条款许可的。Qt及其相应的标志是芬兰及其它全球国家的 The Qt Company Ltd. 的商标。所有其他商标均为其分别所有者的财产。