3

アプリケーションを(再び)スリムにしたい。QtDeclarative は QtXmlPatterns、QtSvg、QtSql に依存しており、これらはまったく使用していないため、それらを使用せずにライブラリをコンパイルしたいと考えています。

誰かが QtDeclarative のソースファイルを変更しましたか (またはこれを行う方法の手がかり)?

4

2 に答える 2

2

次のように Qt を構成できるはずです。

./configure -no-xmlpatterns -no-svg

これらのモジュールに依存する QtDeclarative の部分は自動的に無効になります。たとえば、QtXmlPatterns を削除すると、XQuery に基づいているため、XmlListModel が使用できなくなります。

これは LGPL の意味での Qt への変更ではないため、自分で Qt ソース コードを配布する必要はありません。

残念ながら、現在、このオプションのプリプロセッサ ロジックは存在しないため、-no-sqlQtDeclarative に強く依存しているようです。ただし、これをオプションにするパッチが受け入れられることは想像できます。これがどのように行われるかを知りたい場合は、 in の使用法を確認し#ifdef QT_NO_XMLPATTERNS、条件付きでinsrc/declarativeを含めることに注意してください。qdeclarativexmllistmodel.cppsrc/declarative/util/util.pri

于 2011-06-17T00:09:15.703 に答える
1

依存関係を削除すると問題が発生する可能性がありますが、プロファイルQT -= sqlでetcを試して、どのようなエラーが発生するかを確認できます。それ以外の場合は、QtDeclarativeのソースを変更してQTを再コンパイルしようとするかもしれませんが、QMLレイアウトを使用しているため、QtXmlPatternsへの依存関係を削除するのは非常に難しいと思います。

これは、QTの既知の欠点の1つであり、そのフレームワークで大量の機能を利用できますが、同時に大幅な肥大化が発生します。また、既存のライブラリにリンクするだけではない場合、LGPLではQT自体で変更したソースを出荷する必要があることにも注意してください。

于 2011-06-15T15:53:05.777 に答える