2017-01-29 16 views
9

Qt 5.8 должен был поставляться с опциональным компилятором qtquick раньше времени, вместо этого он появился с помощью компилятора sort-of-a-jit, который по умолчанию включен и кэширует скомпилированные файлы QML на диске, чтобы улучшить производительность при запуске и сокращение использования памяти.Может ли кэширование QML в Qt 5.8 быть отключено для конкретного проекта?

Функция, однако, приходит с seriousbugs, которые значительно уменьшают или в моем случае даже полностью отрицают ее преимущества, так как у меня не было проблем со временем запуска, и тестирование не выявило каких-либо улучшений в использовании памяти бы то ни было.

Итак, что бы я хотел сделать, это отказаться от этой функции в моем проекте, но я, похоже, не нахожу, как это сделать. Возвращение к Qt 5.7.1 не является вариантом, поскольку мой проект опирается на другие новые функции, введенные с 5.8.

ответ

10

Добавить QML_DISABLE_DISK_CACHE (установлен в 1) в переменные среды. Вы должны быть в состоянии сделать это в своем приложении через qputenv - поместите его где-нибудь в main перед загрузкой содержимого QML.

3

Кредит peppe для информирования нас об изменении окружения, но qputenv() принимает только значение параметра QByteArray, поэтому 1 не будет работать.

два варианта, которые работают:

qputenv("QML_DISABLE_DISK_CACHE", "1"); // or 
qputenv("QML_DISABLE_DISK_CACHE", "true"); 

Этот успешный отключает кэш и предотвращает связанные ошибки от проявления.