vs2022 编译遇见编译器堆空间不足,解决办法(针对CMAKE工程)

Posted 行码阁119

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2022 编译遇见编译器堆空间不足,解决办法(针对CMAKE工程)相关的知识,希望对你有一定的参考价值。

1、原因:

就是编译工程文件太大,导致堆栈溢出。原始vs默认的编译器是32位,我们设置为64位就可解决部分问题。

具体可能造成的原因可以参考:

错误 C1060 |微软学习 (microsoft.com)

2、解决:

1、需要提前安装cmake,不然在命令没法通过指令运行

2、在命令行,跳到对应的工程文件,如图

3、输入指令:

cmake -G "Visual Studio 17 2022" -A x64 -T host=x64

 vs版本对应

Visual Studio 17 2022        = Generates Visual Studio 2022 project files.
                                 Use -A option to specify architecture.
  Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
                                 Use -A option to specify architecture.
  Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 10 2010 [arch] = Deprecated.  Generates Visual Studio 2010
                                 project files.  Optional [arch] can be
                                 "Win64" or "IA64".
  Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files.
                                 Optional [arch] can be "Win64" or "IA64".

 

4、然后cmake文件会变成如下文件:

 5、修改最外层的ZERO_CHECK.vcxproj

      5.1 找到PropertyGroup Label="Globals"

      5.2 在最后添加<PreferredToolArchitecture>x64</PreferredToolArchitecture>

 

 6、重新生成,编译即可。

      先点击全部清理,再点击全部生成。

 7、补充:

如果还是报错,可以参考如下报错原因:

如果编译器还发出错误C1076和C3859,请使用 /Zm编译器选项降低内存分配限制。如果降低剩余内存分配,则应用程序可以使用更多堆空间。

如果已经设置了 /Zm选项,请尝试将其删除。堆空间可能已耗尽,因为选项中指定的内存分配限制太高。如果删除 /Zm选项,编译器将使用默认限制。

如果在 64 位平台上进行编译,请使用 64 位编译器工具集。有关信息,请参见如何:在命令行上启用 64 位可视C++工具集。

在 32 位 Windows 上,尝试使用 /3GBboot.ini 开关。

增加 Windows 交换文件的大小。

关闭其他正在运行的程序。

消除不必要的包含文件。

消除不必要的全局变量,例如,通过动态分配内存而不是声明大型数组。

消除未使用的声明。

将当前文件拆分为较小的文件

以上是关于vs2022 编译遇见编译器堆空间不足,解决办法(针对CMAKE工程)的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 编译器的堆空间不足问题的解决(cmake版本)

在vs中进行qt桌面应用开发时,编译器堆溢出的编译错误(error C1060编译器堆内存不足)

在vs中进行qt桌面应用开发时,编译器堆溢出的编译错误(error C1060编译器堆内存不足)

Google Protobuf '编译器堆空间不足'

关于 QtCreator使用msvc2017x64编译器编译项目报错”编译器的堆空间不足“错误 的解决方法

关于 QtCreator使用msvc2017x64编译器编译项目报错”编译器的堆空间不足“错误 的解决方法