cmake中使用qrc编译10MB+资源文件导致堆空间分配失败

Posted

技术标签:

【中文标题】cmake中使用qrc编译10MB+资源文件导致堆空间分配失败【英文标题】:Compiling 10MB+ resource files with qrc in cmake results in heap space allocation failures 【发布时间】:2016-08-30 20:36:33 【问题描述】:

我正在尝试使用 CMake 使用 qrc 编译大型资源文件。

众所周知,这会占用所有计算机 RAM (>32GB) 并导致编译器因堆分配错误而退出(请参阅 QTBUG-50468、QTBUG-55293 和 QTBUG-54357)

Apparently if you use qmake,将CONFIG += resources_big 附加到您的.pro 文件automagically fixes everything。是否可以通过 CMake 访问与此设置等效的设置?

【问题讨论】:

您是否尝试过使用AUTORCC @Torbjörn 是的,我正在使用AUTORCC 我在 Qt 的 CMake 文件中看不到任何关于将 -pass 1-pass 2 传递给 rcc 的引用,所以我想说它还不支持。请在 Qt 的 bugtracker 中提出建议。 【参考方案1】:

如果您使用的是 cmake 宏中的构建,只需替换

qt5_add_resources(SRC_FILES resources.qrc) # normal resources

qt5_add_big_resources(SRC_FILES resources.qrc) # big resources

这需要 Qt5.12 和 CMake 3.9。

【讨论】:

【参考方案2】:

我已提交错误报告 QTBUG-55680,一旦收到 Qt 的回复,我将更新此答案。

【讨论】:

以上是关于cmake中使用qrc编译10MB+资源文件导致堆空间分配失败的主要内容,如果未能解决你的问题,请参考以下文章

如何将 qrc 数据包含到使用 CMake 编译的基于 Qt 的二进制文件中

QT软件开发之基础控件--2.3 QT资源文件

PyQt 使用 pyrcc4 编译 .qrc 文件以在 OSX 下的 Maya 中使用

使用 cmake (windows) 构建时不显示 Qt 资源

qt qrc 文件名称中文

更改后,QT QML资源文件不会重新编译