2011-06-15 6 views
3

私のアプリケーションをスリムにしたい(もう一度)。 QtDeclarativeは私がまったく使わないQtXmlPatterns、QtSvg、QtSqlに依存していますので、私はそれらを使わずにライブラリをコンパイルしたいと思います。QtXmlPatterns、QtSvg、QtSqlなしでQtDeclarativeをコンパイルする方法

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

+0

qt-interestメーリングリストでこれを尋ねる方がよいでしょう。 –

答えて

2

次のようにQtのを設定することができるはずです。

./configure -no-xmlpatterns -no-svg 

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

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

残念ながら、現在のところ、-no-sqlオプションのプリプロセッサロジックは存在しません。したがって、QtDeclarativeのハード依存関係にあるようです。しかし、私はこれをオプションにするパッチが受け入れられるだろうと思います。これがどのように行われるかを知りたい場合は、の使用方法をsrc/declarativeにチェックし、条件付きのqdeclarativexmllistmodel.cppsrc/declarative/util/util.priに含めることに注意してください。

+0

私はそれを試してコンパイルするかどうかを見てみましょう。どうもありがとう。 – Hedge

1

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

これは、QTの既知の欠点の1つです。このフレームワークでは多量の機能が得られますが、同時に大きな膨らみが発生します。またLGPLは、既存のライブラリにリンクするだけではなく、QT自体で変更したソースを出荷するように要求しています。

+0

私はLGPLの制限をほとんど忘れていました。くそー。私のアプリケーションをさらに改善するために時間を使うこともあります。 – Hedge

+0

それはほとんど常に良いアドバイスです。 – AJG85

+0

私はWindows版(qtconfigを使い、Qtを再コンパイルすること)でdllを最適化するのに少し時間を費やしました。私は最終的にアプリケーションのサイズを8.6 MBから6.2 MBに減らしました。それは楽しいことでしたが、ソースをつぶすことはありません – Hedge

関連する問題