Pregunta

Una aplicación heredada en la que estoy trabajando actualmente toma ~ 2 horas para construir. El proyecto tiene alrededor de 170 proyectos, de los cuales 150 son C ++ no administrados y los otros 30 C # .Net 2.0.

¿Cuáles son algunas sugerencias sobre maneras de mejorar los tiempos de construcción para algo como esto?

¿Fue útil?

Solución

Enfoque en los proyectos de C ++: casi se garantiza que serán los drenajes de tiempo más grandes para la construcción.

Algunos consejos para reducir los tiempos de compilación de C ++:

  • ¡Asegúrese de que solo está incluyendo los encabezados que necesita en los proyectos de C ++!
  • Utilice declaraciones de reenvío siempre que sea posible en los encabezados en lugar de incluir otros encabezados
  • Use el modificador / MP para construir en paralelo, cuando sea posible
  • Usa la abstracción de manera efectiva
  • Evita el uso de funciones en línea, ya que estas cuestan más en tiempo de compilación
  • Haga que las dependencias sean correctas, por lo que no está construyendo más a menudo de lo necesario
  • Use los encabezados precompilados apropiadamente

Aparte de eso, si estás hablando de tiempos de compilación de 2 horas, a menudo hay una solución sencilla y barata (en general):

  • Actualice su hardware para ayudar a reducir los tiempos de cómputo

Otros consejos

Si instala IncrediBuild en cada máquina que necesita construirlo, distribuye el proceso de construcción entre todos de las maquinas. Si realmente solo quiere lanzar hardware al problema, puede configurar algunas máquinas dedicadas que solo sirven como clientes IncrediBuild.

En una escala diferente, asegúrese de que cada proyecto tenga encabezados precompilados configurados correctamente.

Puede probar el sistema de compilación distribuida Incredibuild: http://www.xoreax.com/visual_studio. htm

Puede usar una herramienta como lint para ver si tiene redundancia incluida Archivos en tus proyectos de c ++.

También hay un gran artículo sobre este tema en Games from Within .

Cree múltiples soluciones para el proyecto que solo incluyan subconjuntos relevantes de los proyectos y deje una súper solución para lanzamientos, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top