3

我想(再次)精简我的应用程序。QtDeclarative 依赖于我根本不使用的 QtXmlPatterns、QtSvg 和 QtSql,所以我想在没有它们的情况下编译库。

是否有人更改了 QtDeclarative 的源文件(或提示如何执行此操作)?

4

2 回答 2

2

您应该能够按如下方式配置 Qt:

./configure -no-xmlpatterns -no-svg

QtDeclarative 中依赖于这些模块的部分将被自动禁用。例如,移除 QtXmlPatterns 只会导致 XmlListModel 不可用,因为它基于 XQuery。

这不会是对 LGPL 意义上的 Qt 的修改,因此无需自行分发 Qt 源代码。

不幸的是,目前该选项不存在预处理器逻辑-no-sql,因此这似乎是 QtDeclarative 的硬依赖。但是,我可以想象一个使此选项成为可选的补丁将被接受。如果您想了解如何做到这一点,请查看 in 的用法#ifdef QT_NO_XMLPATTERNS并注意 in的src/declarative条件包含。qdeclarativexmllistmodel.cppsrc/declarative/util/util.pri

于 2011-06-17T00:09:15.703 回答
1

删除依赖项可能会导致问题,但您可以QT -= sql在 pro 文件中尝试 etc 并查看您遇到的错误。否则,您可能会尝试修改 QtDeclarative 的源代码并重新编译 QT,但由于它使用 QML 布局,我认为可能很难消除对 QtXmlPatterns 的依赖。

这是 QT 的已知缺点之一,您可以使用该框架获得大量功能,但同时您会变得非常臃肿。另外请记住,如果您要做的不仅仅是链接到现有库,那么 LGPL 要求您发布您在 QT 本身中更改的源代码。

于 2011-06-15T15:53:05.777 回答