3

我正在寻找一种方法来创建 Qt 5.1 的最小静态构建。最低限度,我的意思是一个只有基本的小部件类可用的构建(包括通过 OpenGL 画布/小部件的 2D 图形加速)。我的目标是使用MinGW-builds GCC 4.8.1以及它们的MSYS和工具包在 Windows 7 32 位上进行静态构建。

我已经下载了整个源代码树,但由于 OpenSSL 和 ICU 等软件包的依赖性(最新的 OpenSSL 没有编译),我在编译时遇到了一些问题。我想看看,如果我可以避免这些包的依赖关系,同时实现 Qt 5.1 的最小静态构建,那么我的最终可执行文件的大小不会很大。

我看了一下这个列表:http: //download.qt-project.org/official_releases/qt/5.1/5.1.0/submodules/

Q1:我需要选择哪些模块来构建没有所有花哨的东西的基本 Qt 构建?

Q2:这些模块是否以某种方式相互依赖(我假设它们都依赖于“qtbase”)?

Q3:我是否使用该列表中的名称(例如:“qtxmlpatterns”、“qtx11extras”、“qtwebkit”等)在我的 Qt 构建配置中取消选择它们?

对 Qt 5 的各种子模块进行解释也很好?如果有人可以指出任何链接或文档,其中包含有关此主题的启发性文字,那也很棒。

4

3 回答 3

0

ICU 可以静态链接,您可以自定义它(请参阅文档)以减小大小。默认数据也很大,不知道你需要多少数据。您可以只包含足以以一种语言运行的数据。

只是答案的一部分。

于 2013-09-03T18:20:51.340 回答
0

我有同样的目标。我想“缩小”Qt,只构建一小部分库/DLL,而忽略其余部分。

我确实成功了,至少在 Mac OS X 上是这样。我认为这种方法也适用于其他平台。

我认为诀窍是为“配置”脚本找到某种排除标志,但事实并非如此。

这是我所做的:

  1. 下载源代码发行版(在我的例子中是qt-everywhere-opensource-src-5.1.1)。当然,把它全部提取出来。

  2. 编辑以下三个“pro”文件。这些文件是特定于 qt 的格式(但纯文本)。它们是 Qt(通过 qmake)用来生成 makefile 的独立于平台的项目文件。

    • qtbase/src/src.pro
    • qtbase/src/plugins/plugins.pro
    • qtbase/examples/examples.pro

我对“专业”文件所做的所有更改都是删除。我删除了对以下内容的引用:dbus、ipc、network、qtconcurrent、sql、xml、sqldrivers、qdbusxml2cpp、qdbuscpp2xml、src_dbus、src_concurrent、src_sql、src_network

最后一部分可能听起来很可怕。真的不是。

pro 文件包含模块名称、插件名称和目录名称的列表。如何删除(例如)所有与 SQL 相关的行似乎相当简单。

步骤 3。

通常的配置/制作/安装。但是,请注意传递给 make 的“ module-qtbase ”参数:

./configure -prefix ~/my_test_dir/
make -j2 module-qtbase
make -j2 module-qtbase-install_subtargets

成功。这仅构建和安装了必需品(QtCore、QtGui、QtOpenGL、QtWidgets)并跳过了所有支持的 dylib,如 QtConcurrent、QtMultimedia、QtSql 和 QtWebKit。

于 2013-12-11T02:21:24.543 回答
-1

无需禁用 Qt 模块。每个使用 Qt 的应用程序决定它使用和链接的模块。一个基本的纯控制台应用程序只能使用核心模块。这就是您在 Qt 中创建 Web 服务时所使用的。

于 2013-09-03T21:05:10.183 回答