Además, es probable que desee mantener sus archivos de código fuente lo más pequeños y autónomos posible/factibles, es decir, prefiera muchos archivos de objetos más pequeños en un solo archivo de objeto único.
Esto también ayudará a evitar recompilaciones innecesarias, además puede tener una biblioteca estática con archivos de objetos para cada directorio o módulo de código fuente, básicamente permitiendo que el compilador reutilice la mayor cantidad posible de código compilado previamente.
Algo más, que aún no se mencionaba en ninguna de las respuestas anteriores, hace que los enlaces de símbolos sean 'privados', es decir, prefiere enlaces estáticos (funciones, variables) para su código si no es necesario ser visible externamente
Además, es posible que también desee examinar el uso del GNU gold linker, que es much more efficient para compilar el código C++ para objetivos ELF.
Básicamente, te aconsejo que perfile cuidadosamente su proceso de construcción y verifique dónde se gasta el mayor tiempo, que le dará algunas sugerencias sobre cómo optimizar su proceso de construcción o la estructura de código fuente de su proyecto.
También asegúrese de que se realice cualquier recursión para que make -j realmente funcione. Por ejemplo, no hay llamadas "make -Cdirir", use $ (MAKE), etc. – richq
No estoy seguro de entender la sugerencia. –
Si sus archivos make recurren llamando solo make, no obtendrá mucha escalabilidad con -j ya que solo el nivel superior hará uso de -j arg, debería usar $ (MAKE) porque invocará submakes con el mismo - j y tendrá una mejor oportunidad para ejecutar todos los trabajos. –