Resolución de problemas de espacio de montón del compilador de Visual Studio (versión cmake)
Error fatal C1060: El compilador no tiene suficiente espacio en el montón
Cada vez que ocurre este error, siempre es necesario pedirle a alguien que reinicie la máquina y la reconfigure, lo cual requiere mucho tiempo y energía.
Así que estoy intentando encontrar una solución completa.
Los usuarios que quieran encontrar la solución directamente pueden saltarse las dos secciones siguientes.
Una simple búsqueda en la web encontrará la referencia 1.
Si su proyecto c no utiliza cmake, el método de la referencia 1 es suficiente para sus necesidades.
Pero nuestro proyecto es bastante grande y definitivamente necesitamos usar cmake, así que comencé a probar varios métodos para hacer que el archivo de proyecto vcxproj generado por cmake contenga el atributo PreferredToolArchitecture cambiando el archivo cmake del proyecto.
Busqué en línea durante mucho tiempo y probé muchos métodos sin éxito.
Descubrir la solución final también es un proceso interesante y que vale la pena registrar.
Primero, veo que el nodo principal de PreferredToolArchitecture es PropertyGroup, y hay una propiedad de Plataforma en PropertyGroup, y PreferredToolArchitecture y Platform son propiedades hermanas.
Especificamos si la plataforma usa x64 o win32 en la línea de comando de cmake.
Así que me atrevería a suponer que si la propiedad PreferredToolArchitecture se puede configurar a través de cmake, entonces es posible que esta propiedad también se pueda configurar en la línea de comando de cmake.
Entonces, comencé a verificar cuidadosamente. Primero, ejecuté: cmake --help
Al leer el documento de ayuda y usar métodos de eliminación simples, sentí que el atributo nombre del conjunto de herramientas era probablemente el atributo que quería, así que busqué en línea: nombre del conjunto de herramientas cmake
y encontré el documento 2, donde encontré el atributo host=x64, que es el mismo que el atributo de nombre del conjunto de herramientas. Encontré el atributo host=x64 pero aún no sé cómo usarlo. Entonces, continué buscando: cmake host=x64
y encontré el documento 3, luego modifiqué nuestro script de compilación para incluir esta opción de compilación y lo reconstruí, y efectivamente, apareció en el atributo PreferredToolArchitecture x64 del archivo vcxproj.
Siento un 90% de éxito. Compilé el proyecto, abrí el administrador de tareas, observé el nombre del proceso y descubrí que el compilador de c era todo de 64 bits, así que terminé.
La esencia del problema es que el compilador cpp predeterminado de Visual Studio en el sistema operativo Windows es de 32 bits, por lo que la memoria máxima es 4G, lo que fácilmente puede hacer que el compilador se quede sin memoria.
El comando cmake problemático es el siguiente:
La solución para usar el compilador cpp de 64 bits es la siguiente:
Nota: La GUI de cmake no tiene la opción -T host, por supuesto, las últimas versiones de la GUI también pueden agregar esta opción.
Hay otra forma de agregar variables de entorno: configurando PreferredToolArchitecture=x64
Aunque utilicé un compilador cpp de 64 bits, después de un tiempo todavía informaba de espacio de almacenamiento dinámico insuficiente.
Se observó que el uso de memoria física es 100, así que considere utilizar el espacio disponible en disco y aumentar la memoria virtual de la máquina.
Cómo configurar el tamaño de la memoria virtual en win10: /article/2fb0ba4041d14c00f3ec5f4e.html
La memoria física es solo 32G, la memoria virtual es originalmente 6G, estoy usando la gratuita Disco para aumentar la memoria virtual ¡A 100G!