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 的二进制文件中
PyQt 使用 pyrcc4 编译 .qrc 文件以在 OSX 下的 Maya 中使用