Qt 5.8中的QML缓存是否可以针对特定项目禁用?

dte*_*ech 12 configuration qt caching qml qt5.8

Qt 5.8应该是提前使用qtquick编译器的可选用法,而是它带有一个jit-jit编译器,默认情况下启用并在磁盘上缓存已编译的QML文件以提高启动性能并减少内存使用量.

然而,该功能带来了严重的 错误,这些错误大大减少,或者在我的情况下甚至完全否定了它的好处,因为我没有启动时间的问题,并且测试没有显示任何内存使用改进.

所以我想做的是在我的项目中选择退出该功能,但我似乎没有找到如何做到这一点.回到Qt 5.7.1不是一个选择,因为我的项目依赖于5.8引入的其他新功能.

pep*_*ppe 13

添加QML_DISABLE_DISK_CACHE(设置为1)到您的环境变量.你应该能够在你的应用程序中通过qputenv- main在加载QML内容之前把它放在某处.


dte*_*ech 6

感谢peppe告知我们环境变量,但qputenv()仅将a QByteArray作为值参数,因此1将无法使用。

起作用的两个选项:

qputenv("QML_DISABLE_DISK_CACHE", "1"); // or
qputenv("QML_DISABLE_DISK_CACHE", "true");
Run Code Online (Sandbox Code Playgroud)

这样可以成功禁用缓存,并防止相关的错误出现。