2016-05-17 5 views
0

私のアプリケーションでは、組み込みリソースとして12 MBのテキストファイルが必要です。結果の実行可能ファイルが12 MBを少し上回っていることに驚いたので、コマンドラインでzipを試してみましたが、それは70%のしきい値を下回る68%しか収縮しませんでした。Qtリソースシステムのrccオプションとbz2?

bz2はそれをより小さく収縮させる。その圧縮を使用する方法はありますか?本当にうまく圧縮するためにプレーンテキストファイルが使用されていることは確かです。

私はMakefileの 'しきい値'を減らすことについて明確ではありません。 rcc -hは言う:

--threshold <level> Threshold to consider compressing files. 

だから--threshold="70%"に翻訳しますか?

+0

これは、Qtコーダーが適切な圧縮APIがないと不平を言うところです。 'qCompress'はカウントされません。 –

答えて

0

まず、-thresholdフラグにdocumentation

は、ファイルを圧縮するかどうかを決定するときに使用する(パーセンテージとして)閾値レベルを指定します。ファイルサイズの縮小がしきい値レベルより大きい場合、圧縮されます。それ以外の場合は、圧縮されていないデータが代わりに格納されます。デフォルトのスレッショルドレベルは70%です。つまり、元のサイズの30%以下の圧縮ファイルが圧縮データとして保存されます。

デフォルトのzlib圧縮を使用し、しきい値を手動で設定するか、圧縮レベルを自分で設定します。

rcc -level 9 ... 

か、単に十分な圧縮しきい値を高めるために:最大の圧縮レベルを上げるために

rcc -threshold 35% ... 

あなたはもちろん、両者を組み合わせることができます。デフォルトの圧縮レベルは-1です。つまり、zlibは圧縮量を決定します。

を編集してください:圧縮を議論するときに、ドキュメントが矛盾する(または、おそらく単純ではない)場合があります。 Hereではなく-thresholdフラグの割合の積分値を使用しています:

rcc -compress 2 -threshold 3 

いくつかのテストが要求されます。

0

あなたの答えJonをありがとう。私は、ファイルに空白を追加してテストしました。コマンドラインのジップで報告されたデフレーションを71%にするには十分で、実行可能な実行ファイルは4.6MBに下がったので、理論は正しい。

rccは出力のようなXMLを生成するようですが、-thresholdオプションと-compressオプションを受け入れます。構文エラー報告がなければ、どんな値でも受け入れられるようです。

私は、makefileにthresholdオプションをどこに置くべきかわかりません。私のファイルを参照する部分:

qrc_meresource.o: qrc_meresource.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_meresource.o qrc_meresource.cpp さまざまな場所でrccの受け入れ可能なオプションを入れてみました。すべて拒否されました。

この行はCXXFLAGSを定義: CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES)

私も 'COMPRESS = BZIP2 -9f' に 'COMPRESS = GZIP -9f' 行を変更しようとしたが、結果は全く異なるありませんでした。

+0

今日入手する。 'rcc -threshold 50 -binary res.qrc -o res.bin'や 'rcc -threshold 50 res.qrc -o res.cpp'のようなコマンドは必要に応じて動作します。再度、感謝します。 –

関連する問題