Tengo un marco que está siendo utilizado por varios proyectos (que incluye varias muestras para mostrar cómo funciona el marco). El marco tiene componentes tales como núcleo, gráficos, física, gui, etc. Cada uno es una biblioteca separada. También hay varias configuraciones.Compartir encabezados precompilados de manera eficiente
Un archivo de solución principal compila el proyecto completo con todas las configuraciones posibles para que los proyectos puedan usar las bibliotecas. Como rara vez se vuelve a compilar el marco, especialmente si alguien (incluido yo) trabaja en un proyecto que utiliza el marco, tiene sentido precompilar los muchos encabezados.
Inicialmente tenía cada proyecto/muestra tiene su propio encabezado precompilado utilizado para todo el proyecto. Cada vez que tendría que reconstruir el mismo pch (por ejemplo, Debug), decidí que una PCH compartida reduciría la redundancia de la compilación de PCH. Hasta aquí todo bien. Tengo un proyecto que compila el PCH junto con las bibliotecas. Todos los proyectos/muestras posteriores ahora usan el mismo PCH. Esto ha funcionado maravillosamente.
El único problema es que he visto un aumento en el tamaño del archivo. Esto no es un obstáculo, como si un proyecto que utiliza el marco está destinado a ser lanzado, puede separarse del PCH compartido y hacerlo suyo. He hecho esto por el bien del rápido desarrollo (de hecho, he creado una herramienta que crea los archivos del proyecto VS y los archivos fuente para un nuevo proyecto/muestra listo para ser construido así como para facilitar la actualización de un proyecto anterior que estaba usando un versión del marco).
De todos modos, (supongo que) el aumento en el tamaño del archivo se debe a que el archivo de proyecto VS independiente que está creando el PCH compartido incluye todos los encabezados de todas las bibliotecas. Mi pregunta es si puedo usar la compilación condicional (#ifndef) para reducir el tamaño del ejecutable final. O tal vez compartir varios archivos PCH de alguna manera (hasta donde sé, eso no es posible, pero quizás esté mal) Si no tengo sentido, dígalo (en palabras amables :)) ya que mi conocimiento de los archivos PCH es muy limitado. .
¡Gracias!
Nota: Para volver a iterar y dejar en claro, hasta ahora, tengo un archivo de solución que está compilando todas las bibliotecas, incluida la PCH compartida. Ahora, si recompilo todas las muestras y proyectos, compilan en un par de segundos o más como máximo. Antes, cada proyecto recrearía un archivo PCH. Además, inicialmente quería una PCH para cada biblioteca, pero luego descubrí que un archivo fuente no puede usar varios archivos PCH, por lo que esta opción no era factible. Otra opción es compilar todas las combinaciones posibles de archivos PCH, pero eso es demasiado lento y engorroso, y propenso a errores.
VOGUE POR FAVOR PARA ESTO: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4931119-allow-precompiled-headers-to-be-shared-between-pro –