qt - Qt 5.1 的模块及其相互依赖性?

标签 qt compilation mingw qt5 msys

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

我已经下载了整个源码树,由于OpenSSL、ICU等包的依赖,在编译时遇到了一些问题(最新的OpenSSL无法编译)。我想看看我是否可以避免这些包的依赖性,同时实现 Qt 5.1 的最小静态构建,这样我的最终可执行文件的大小就不会很大。

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

问题 1:我需要选择这些模块中的哪些模块才能拥有基本的 Qt 构建而没有所有花哨的东西?

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

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

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

最佳答案

我也有同样的目标。我想“缩小”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

我对“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)并跳过了所有支持的动态库,如 QtConcurrent、QtMultimedia、QtSql 和 QtWebKit。

关于qt - Qt 5.1 的模块及其相互依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318955/

相关文章:

qt - 将委托(delegate)与 QDataWidgetMapper 和 QLabel 一起使用

python - PyQt5 信号槽装饰器示例

c++ - 更正 Visual C++ __FILE__ 宏的大小写

c++ - Qt示例无法在Ubuntu上运行

c++ - Cmake 编译具有 VTK 依赖性的目录中的所有 c++ 文件

audio - 在 Raspberry Pi Zero W 上安装 Julia >v1.1.1

C# (MSIL) 到 native X86 代码?

c - 使用 mingw 在 Linux 上将 c 编译为 (windows)exe 时出错

c - 使用 minGW 将 FFTW 链接到 matlab

c - gcc mingw 在与程序集结合时给出垃圾输出