52

¿Cómo puedo obtener VS 2010 para ejecutar más de un proceso de compilación de C++ a la vez? Me refiero a construir módulos de objetos en paralelo; No estoy interesado en crear más de un proyecto a la vez (sé de Herramientas> Opciones> Compilar y ejecutar < Número máximo de compilaciones paralelas de proyectos, pero eso no hace lo que quiero).¿Cómo puedo hacer una compilación paralela en Visual Studio 2010?

Básicamente, estoy buscando el equivalente de Visual Studio de "make -jN".

+1

http://msdn.microsoft.com/en-us/library/bb385193.aspx – Necrolis

+0

Sólo astillado Tal vez esto ayuda [link] (http:. // blogs. msdn.com/b/visualstudio/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx) – ervinbosenbacher

Respuesta

30
  1. Herramientas -> Opciones
  2. proyectos y soluciones \ Configuración de proyecto VC++
  3. máximo compilaciones concurrente C++

Además, como se dijo Ross Smith en los comentarios, también es necesario para encender la opción "compilación multiprocesador" en el proyecto:

  1. propiedades del proyecto
  2. Propiedades de configuración> C/C++> General
  3. Compilación multiprocesador
  4. Beneficio!
+2

Eso no tiene ningún efecto. Ponerlo en 0 (el valor predeterminado, que se supone que significa "usar todos los núcleos") o 4 (el número real de núcleos) no hace ninguna diferencia, todavía construye solo un módulo a la vez. –

+1

@Ross: cuando ese tipo de construcción en paralelo está en vigencia, no se muestra en la salida de la consola (a diferencia de las versiones paralelas del proyecto). ¿Verificaste que no está sucediendo según el administrador de tareas o simplemente no ves nada en la consola? Debería ver la misma cantidad de 'cl.exe' que sus núcleos. –

+0

Lo vi en Process Explorer, solo hay un proceso cl.exe y solo está ejerciendo uno de los cuatro núcleos. –

3

jom es la herramienta que está buscando.

Desde el wiki en: http://qt-project.org/wiki/jom

Jom es un clon de nmake para apoyar la ejecución de múltiples comandos independientes en paralelo. Básicamente, agrega el -j comando interruptor de línea similar a la marca GNU.

Si bien la mayor parte de la documentación está dirigido a desarrolladores de Qt tratando de acelerar la biblioteca Qt se basa en ventanas, Jom debería funcionar perfectamente bien en proyectos no Qt también, siempre y cuando tenga un archivo MAKE compatible nmake.

La página wiki tiene binarios que puede descargar y llama a jom como lo haría.

+0

Desafortunadamente, encontré que Jom tiene muchas fallas y, a menudo, no entiende que un proceso haya terminado colgándose hasta que los mundos hayan terminado. – Lothar

14

El comentario de Necrolis parece ser la solución correcta.

/MP (Build with Multiple Processes)

La opción/MP hace que el compilador para crear una o más copias de sí, cada uno en un proceso separado. Estas copias simultáneamente compilan los archivos fuente. En consecuencia, el tiempo total para crear los archivos fuente se puede reducir significativamente.

Tenga en cuenta que se puede establecer a nivel de proyecto (y por lo tanto se aplicará a todos los archivos en ella), así como a los archivos individuales, útil por ejemplo si necesita utilizar #import.

En particular,/MP no suele ser compatible con encabezados precompilados, o fuentes que usan #import; en este caso, aún puede establecer/indicador MP en el proyecto y luego borrarlo en los archivos individuales (por lo general, stdafx.cpp y cualquier archivo que use #import).

4

Aquí es lo que hice

1) Ir a Herramientas> Opciones de bajo "Proyecto y soluciones" -> "generar y ejecutar" para mí que tenía el número de núcleos. Aunque al principio pensé que esto era todo lo que tenía que hacer, pero no es

2) Haga clic derecho en su proyecto y seleccione las propiedades. En "Propiedades de configuración" -> "C/C++" -> "Línea de comando", ingrese /MP4 donde 4 es la cantidad de núcleos que tiene. Obtendrá una advertencia acerca de los indicadores no es compatible por lo que tenemos un paso más

3) Ir a en "Propiedades de configuración" -> "C/C++" -> "Generación de código" no "Activar mínimo reconstruir". Cambia eso a no.

Reconstruya y debe ver múltiples procesos CL en su administrador de tareas.

15

Hay dos interruptores que se deben establecer con el fin de hacer VS construir utilizando múltiples hilos (ambos son específicos del proyecto):

  • proyecto propiedades-> C/C++ -> General->multi-procesador compilación conjunto a: Sí (/ MP)
  • proyecto propiedades-> C/C++ -> Código generación->Habilitar regeneración mínima conjunto a: No (/ GM)

Consulte también Sus herramientas-> Opciones-> Proyectos y soluciones-> Configuración del proyecto VC++->Configuraciones máximas concurrentes de C++ configuración. El valor predeterminado es 0, lo que permite a VS usar tantas compilaciones simultáneas como sea posible.

+2

¿Cuándo necesita desactivar la reconstrucción mínima para utilizar la compilación de varios procesadores? –

+0

Siempre porque son incompatibles. – dimon4eg

0

¡Ya veo! Su requisito es construir un solo proyecto en hilos paralelos.

me parece Shark compiler Control complemento muy útil

Cuestiones relacionadas