如何从源代码构建一系列 Qt5 子模块?

Posted

技术标签:

【中文标题】如何从源代码构建一系列 Qt5 子模块?【英文标题】:How to build a selection of Qt5 submodules from source? 【发布时间】:2019-03-21 08:54:20 【问题描述】:

Qt 下载页面 (http://download.qt.io/official_releases/qt/5.12/5.12.2/) 提供了多个源档案,可用于从源代码构建 Qt5。一个包含所有资源,我设法成功构建了它,但它需要很长时间,并且包含很多我不使用的东西。

他们还提供子模块源包,这些包可用于仅构建 Qt 提供的子集。但是,我找不到有关如何正确构建这些的手册。我需要 QtBase 和 QtXmlPatterns 包。我设法自己构建了 QtBase 包,但我想知道如何构建多个子模块。

QtXmlPatterns 包不能自己构建,所以我尝试简单地将源代码从 QtXmlPatterns 子模块复制到 QtBase 子模块中。但是当我执行配置步骤时,这给了我错误。

那么,将多个子模块源包组合成一个可以构建的设置的正确程序是什么?

感谢您的宝贵时间。

编辑: 不确定它是否相关,但我正在使用 Visual Studio 2019 在 Windows 上构建 Qt5.12.2。

【问题讨论】:

请问如何只构建QtBase?我仍处于能够构建所有东西的阶段,而不仅仅是单个组件。 我认为你必须从download.qt.io/archive/qt/5.14/5.14.2/submodules 下载qtbase-everywhere-src 包。这个包可以像在download.qt.io/archive/qt/5.14/5.14.2/single 找到的完整包一样构建。我假设你已经成功构建了完整的包。 【参考方案1】:

构建流程与构建完整的源代码包有点不同。

按照您已经完成的方式配置和构建独立的 qtbase。使用 PREFIX 以便您可以调用 make install 并将构建结果安装到文件系统中的某个位置。 您可能希望将生成的 bin 文件夹添加到 PATH 环境变量中 将您要构建的其他子模块提取到单独的文件夹中 在您的子模块上运行qmakemakemake install,就好像它是一个“普通”Qt 项目一样。这会将子模块安装到 qtbase 的 PREFIX 位置。

【讨论】:

什么是前缀? PREFIX 是构建 qtbase 时 Qt 的配置工具的 -prefix 参数。就是安装位置。

以上是关于如何从源代码构建一系列 Qt5 子模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正确分发的发行版 pdb 文件构建 Qt5

在 Linux 上从源代码构建的 Qt5 上找不到 Qt 平台插件 xcb

无法从 qt5.6 源代码为 raspberry pi 2 构建 qtwebengine

Qt 5.1 的模块及其相互依赖关系?

如何从 aws lambda 中的 git 子模块导入代码?

如何构建 Python C 扩展,以便我可以从模块中导入它