我想(再次)精简我的应用程序。QtDeclarative 依赖于我根本不使用的 QtXmlPatterns、QtSvg 和 QtSql,所以我想在没有它们的情况下编译库。
是否有人更改了 QtDeclarative 的源文件(或提示如何执行此操作)?
您应该能够按如下方式配置 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.cpp
src/declarative/util/util.pri
删除依赖项可能会导致问题,但您可以QT -= sql
在 pro 文件中尝试 etc 并查看您遇到的错误。否则,您可能会尝试修改 QtDeclarative 的源代码并重新编译 QT,但由于它使用 QML 布局,我认为可能很难消除对 QtXmlPatterns 的依赖。
这是 QT 的已知缺点之一,您可以使用该框架获得大量功能,但同时您会变得非常臃肿。另外请记住,如果您要做的不仅仅是链接到现有库,那么 LGPL 要求您发布您在 QT 本身中更改的源代码。