可以为特定项目禁用 Qt 5.8 中的 QML 缓存吗?
Posted
技术标签:
【中文标题】可以为特定项目禁用 Qt 5.8 中的 QML 缓存吗?【英文标题】:Can QML caching in Qt 5.8 be disabled for a particular project? 【发布时间】:2017-01-29 15:31:42 【问题描述】:Qt 5.8 应该带有可选的提前使用 qtquick 编译器,但它带有一个 sort-of-a-jit-compiler,该功能默认启用并将编译的 QML 文件缓存在磁盘上,以便提高启动性能并减少内存使用。
然而,该功能与 serious bugs 一起出现,这大大减少了,或者在我的情况下甚至完全否定了它的好处,因为我一开始就没有启动时间问题,而且测试也没有发现任何问题内存使用方面的任何改进。
所以我想做的是在我的项目中选择退出该功能,但我似乎不知道如何做到这一点。回到 Qt 5.7.1 不是一个选项,因为我的项目依赖于 5.8 引入的其他新功能。
【问题讨论】:
【参考方案1】:将QML_DISABLE_DISK_CACHE
(设置为1)添加到您的环境变量中。您应该可以通过 qputenv
在您的应用程序中执行此操作——在加载 QML 内容之前将其放在 main
的某个位置。
【讨论】:
【参考方案2】:感谢 peppe 通知我们环境变量,但 qputenv()
仅将 QByteArray
作为值参数,因此 1
将不起作用。
有效的两个选项:
qputenv("QML_DISABLE_DISK_CACHE", "1"); // or
qputenv("QML_DISABLE_DISK_CACHE", "true");
这成功禁用缓存并防止相关的错误出现。
【讨论】:
以上是关于可以为特定项目禁用 Qt 5.8 中的 QML 缓存吗?的主要内容,如果未能解决你的问题,请参考以下文章