我想减少我的应用程序(再次)。 QtDeclarative取决于我根本不使用的QtXmlPatterns,QtSvg和QtSql,所以我想在没有它们的情况下编译库。
是否有人更改了QtDeclarative的源文件(或线索如何执行此操作)?
答案 0 :(得分:2)
您应该能够按如下方式配置Qt:
./configure -no-xmlpatterns -no-svg
QtDeclarative中依赖于这些模块的部分将被自动禁用。例如,删除QtXmlPatterns只会导致XmlListModel不可用,因为它基于XQuery。
这不会对LGPL意义上的Qt进行修改,因此无需自行转发和分发Qt源代码。
不幸的是,目前没有-no-sql
选项的预处理器逻辑,因此它似乎是QtDeclarative的硬依赖。但是,我可以想象一个可以接受这个选项的补丁。如果您想了解如何完成此操作,请查看#ifdef QT_NO_XMLPATTERNS
中src/declarative
的使用情况,并注意qdeclarativexmllistmodel.cpp
中src/declarative/util/util.pri
的条件包含。
答案 1 :(得分:1)
可能会导致删除依赖项的问题,但您可以在专业文件中尝试QT -= sql
等,看看您遇到了哪些错误。否则你可能会尝试修改QtDeclarative的源代码并重新编译QT,但由于它使用了QML布局,我认为删除对QtXmlPatterns的依赖可能非常困难。
这是QT的一个已知缺点,你可以通过该框架获得大量功能,但同时会出现明显的膨胀。另外请记住,如果你做的不仅仅是链接到现有的库,LGPL要求你发送你在QT中自行更改的源。