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

Qt 5.1的模块及其相互依赖性?,qt,compilation,mingw,qt5,msys,Qt,Compilation,Mingw,Qt5,Msys,我正在寻找一种方法来创建Qt5.1的最小静态构建。所谓最小,我指的是一个只包含一组基本可用的小部件类的构建(包括通过OpenGL画布/小部件的2D图形加速)。我的目标是在Windows7上实现一个32位的静态构建,使用他们的软件和工具包 我已经下载了整个源代码树,由于OpenSSL和ICU等包的依赖性,在编译时遇到了一些问题(最新的OpenSSL没有编译)。我想看看,我是否可以避免这些包的依赖性,同时实现Qt5.1的最小静态构建,这样我的最终可执行文件就不会太大了 我看了一下这个列表: Q1:

我正在寻找一种方法来创建Qt5.1的最小静态构建。所谓最小,我指的是一个只包含一组基本可用的小部件类的构建(包括通过OpenGL画布/小部件的2D图形加速)。我的目标是在Windows7上实现一个32位的静态构建,使用他们的软件和工具包

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

我看了一下这个列表:

Q1:我需要选择这些模块中的哪一个来构建一个基本的Qt,而不需要所有花哨的东西

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

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


这也很好,解释一下Qt5的各个子模块?如果有人能指出任何关于这个主题的链接或文档,那也太好了。

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


答案的一部分。

没有必要禁用Qt模块。每个使用Qt的应用程序决定它使用什么模块并与之链接。仅限控制台的基本应用程序只能使用核心模块。这就是在Qt中创建web服务时所使用的方法。

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

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

我原以为诀窍是为“configure”脚本找到某种排除标志,但事实并非如此

以下是我所做的:

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

  • 编辑以下三个“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的“模块qtbase”参数:

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

    成功。这只构建和安装了essentials(QtCore、QtGui、QtOpenGL、QtWidgets),并跳过了所有支持动态库,如QtConcurrent、QtMultimedia、QtSql和QtWebKit。

    现在我得到了一个风滚草徽章。谢谢,不过谢谢。我以为这个问题已经被遗忘了。是否了解Qt 5.1中的各个模块?@OleThomsenBuus否,对不起。我在重症监护病房工作,一直在寻找重症监护病房的问题。不过,看看你得到的另一个答案。我会在某个时候尝试一下。我很久以前就放弃了:)我从来没有想过有必要更改.pro文件本身。我使用的是Windows7(目前为32位),在编译过程中取得了相对的进展。在某个时刻,30-45分钟后,与ICU的连接会把事情搞砸,制造过程也会停止。我再也回不去了。也许我应该再试一次。