Qt资源系统rcc选项和bz2?

时间:2016-05-17 20:56:48

标签: qt compression

我的应用程序需要一个12 MB的文本文件作为内置资源。我感到惊讶的是,由此产生的可执行文件有点超过12 MB,因此我在命令行上尝试使用zip,它只会降低68%,低于70%的阈值。

bz2缩小它。有没有办法可以使用压缩,或更好的东西?我确定用于压缩的纯文本文件非常好。

我不清楚降低阈值'在Makefile中。 rcc -h说:

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

那会转换为--threshold="70%"吗?

2 个答案:

答案 0 :(得分:0)

首先,-threshold标志上的documentation

  

指定在决定是否压缩文件时使用的阈值级别(以百分比表示)。如果文件大小的减少大于阈值级别,则将其压缩;否则,存储未压缩的数据。默认阈值级别为70%,这意味着原始大小的30%或更小的压缩文件将存储为压缩数据。

根据读取,您有两种选择:使用默认的zlib压缩并手动设置阈值,或自己设置压缩级别。

将压缩级别增加到max:

rcc -level 9 ...

或者提升压缩阈值

rcc -threshold 35% ...

当然,你可以将两者结合起来。默认压缩级别为-1,表示zlib决定压缩程度。

编辑:在讨论压缩时,文档与自身相矛盾(或者可能根本不清楚)。 Here它使用整数值而不是-threshold标志的百分比:

rcc -compress 2 -threshold 3

需要进行一些测试。

答案 1 :(得分:0)

谢谢你的回答乔恩。我通过在我的文件中添加大量空格来测试。足以让命令行zip报告的通货紧缩达到71%,生成的可执行文件降到4.6 MB,所以理论是正确的。

rcc似乎只生成类似XML的输出,但接受-threshold和-compress选项。没有语法错误报告,任何值似乎都可以接受。

我不确定将阈值选项放在makefile中的哪个位置。引用我的文件的部分:

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 = gzip -9f'行更改为'COMPRESS = bzip2 -9f',但结果没有区别。