我正在寻找一种方法来创建一个最小的QT5.1静态构建。所谓最小值,我指的是只有可用的基本小部件类集的构建(包括通过OpenGL画布/小部件进行2D图形加速)。我的目标是在Windows 7上构建一个32位的静态版本,使用MinGW-建造GCC 4.8.1以及它们的MSYS和工具包。
我已经下载了整个源代码树,并且由于OpenSSL和ICU等包的依赖性(最新的OpenSSL没有编译),在编译过程中遇到了一些问题。我想知道,如果我能避免这些包的依赖,同时实现QT5.1的最小静态构建,那么我的最终可执行文件的大小就不会太大了。
我看了一下这个列表:版本/qt/5.1/5.1.0/子模块/。
Q1:在这些模块中,我需要选择哪些模块才能构建一个基本的Qt,而不需要所有花哨的东西?
Q2:这些模块在某种程度上相互依赖(我假设它们都依赖于"qtbase")?
Q3:我是否使用该列表中的名称(例如:"qtxmlpatterns“、"qtx11extras”、"qtwebkit“等)来取消在Qt构建的配置中选择它们?
这也很好,解释了Qt 5的各个子模块吗?如果有人能指出任何链接或文档与这一主题的说明性的话,这也将是伟大的。
发布于 2013-12-11 02:21:24
我也有同样的目标。我想“缩小”Qt,只构建库/DLL的一小部分,而忽略其余的部分。
我确实成功了,至少在Mac上是如此。我认为这种方法也能在其他平台上工作。
我认为诀窍是为“配置”脚本找到某种类型的排除标志,但事实证明并非如此。
以下是我所做的:
- **qtbase/src/src.pro**
- **qtbase/src/plugins/plugins.pro**
- **qtbase/examples/examples.pro**
我对"pro“文件所做的所有更改都是删除的。我删除了对以下几个方面的引用:dbus、ipc、network、qtconcurrent、sql、xml、sqldrivers、qdbusxml2cpp、qdbuscpp2xml、src_dbus、src_concurrent、src_sql、src_network。
最后那部分可能听起来很吓人。真的不是。
pro文件包含一个模块名、插件名和目录名的列表。如何删除(例如)所有与SQL相关的行似乎相当简单。
步骤3.
通常的配置/make/install。但是,请注意传递的"module-qtbase“参数:
./configure -prefix ~/my_test_dir/
make -j2 module-qtbase
make -j2 module-qtbase-install_subtargets成功。它只构建和安装了基本要素(QtCore、QtGui、QtOpenGL、QtWidgets),并跳过了QtConcurrent、QtMultimedia、QtSql和QtWebKit等所有支持的dylib。
发布于 2013-09-03 18:20:51
ICU可以静态链接,您可以自定义它(请参阅文档)以减小大小。默认情况下,数据也很大,我不知道您需要多少数据。您只能包含以一种语言运行的足够的数据。
只是答案的一部分。
发布于 2013-09-03 21:05:10
没有必要禁用Qt模块。每个使用Qt的应用程序都决定它使用和链接哪些模块。只有控制台的基本应用程序可以只使用核心模块。这就是在Qt中创建web服务时使用的内容。
https://stackoverflow.com/questions/18318955
复制相似问题