Evgenii Legotckoi
07 жовтня 2019 р. 13:34

Недокументований QMake - CONFIG + = resources_big

На нашому проекті використовується дуже велика кількість ресурсів, як звичайних іконок, так і svg зображень. У якийсь момент проект перестав збиратися на ПК розробників з невеликим об'ємом пам'яті 16 Гб.

Проблема виявилася в тому, що при компіляції ресурсних файлів неконтрольовано споживається вся доступна пам'ять, а якщо її не вистачає, то збірка завершується з помилкою.


Опис помилки

У разі використання компілятора MSVC помилка є наступною:

error: C1060: compiler is out of heap space

Рішення

Однак в Qt вже давно доданий спеціальний прапор, який оптимізує збірку величезних ресурсних файлів. Тобто вирішує цю помилку.

Даний прапор наазивается resources_big і додається в pro файлі наступним чином

CONFIG += resources_big

Що примітно, даний прапор був Добаль дуже давно, але при цьому до цих пір не документований, хоча присутній навіть у проектах-прикладах самого Qt. Або його опис заховано дуже глибокого в документації Qt.

Рекомендовані статті на цю тему

По статті запитували0питання

4

Вам це подобається? Поділіться в соціальних мережах!

МП
  • 17 жовтня 2019 р. 13:15

Совет: подключайте ресурсы динамически.
Используйте Resource Compiler:
https://doc.qt.io/qt-5/rcc.html

Evgenii Legotckoi
  • 17 жовтня 2019 р. 13:17
  • (відредаговано)

Используем, там где требуется :)

R
  • 04 грудня 2019 р. 16:14

Добрый день, Евгений!
А можно ли этот флаг, каким-то образом написать при компиляции программы с использованием PyQT? Например с помощью Nuitka?

Evgenii Legotckoi
  • 05 грудня 2019 р. 02:49

resources_big - это флаг для сборки c++ приложения. Если Nuitka не предоставляет какой-либо функционал для прикручивания конфигурационных директив типа CONFIG при компиляции, то сомневаюсь. Про сам Nuitka я первый раз слышу, не сталкивался с этой штукой.
А так я согласен с Михаилом, как он вам ответил на форуме, нужно использовать динамические ресурсные файлы.

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up