2011-10-19 17 views
7

Estoy generando salida de preprocesador (.i) desde Visual Studio, pero también quiero hacer la compilación real. ¿Hay una combinación de indicadores que darán como resultado el archivo .i sin detener el compilador de seguir adelante con la compilación de forma normal?Cómo generar código preprocesado Y compilarlo (Visual Studio)

Esto es actualmente solo C++, pero probablemente querrás usarlo con CUDA más tarde, así que prefiero las respuestas que funcionan dentro de Visual Studio en lugar de requerir línea de comandos (a menos que también funcione para CUDA).

El objetivo de esto es ahorrar el tiempo que se tarda en ejecutar Proyecto-> Propiedades-> Accesos de configuración-> C/C++ -> Preprocesador-> Generar archivo preprocesado Sí/No más Reconstruir. Particularmente, es molesto para mí que el preprocesador tenga que ejecutarse dos veces, por lo que una solución que de alguna manera genera el archivo .i en la parte 1 y luego compila ese archivo en la parte 2 estaría bien.

La versión exacta de Visual Studio que estoy usando es VS 2008 Express

+0

** VS 2088 Express ** ¡genial! –

+1

@ K-ballo: VS2088 es genial. Desafortunadamente es muy costoso, ya que necesita adquirir una máquina del tiempo para obtener una copia. –

+0

@ K-ballo gracias – Raffles

Respuesta

2

Se puede añadir un paso de generación o un nuevo objetivo para volcar el proceso previo después de que el código está construido, por definición, la salida del preprocesador de dumping es lo está construído.

+0

De cualquier manera, la construcción tiene que leer los archivos dos veces? ¡Pero esa es la parte lenta! –

+0

El destino personalizado podría construir cpp el * .i siempre que dependa del objetivo que vuelque el preprocesador. – rerun

+0

* parpadear * Whoa ... Eso podría funcionar, y posiblemente generar un archivo más eficiente debido a que el enlazador sabe más ... –

0

Puede crear una configuración de compilación personalizada que realice preprocesamiento y luego definir una compilación por lotes que genere la versión preprocesada seguida de la versión compilada/vinculada real.

+0

OK, esto suena genial. Por "configuración de compilación personalizada" ¿te refieres al "paso de compilación personalizada" que mencionó el chico anterior? Si es así, hay una buena progresión aquí :-) – Raffles

0

Utilice la Ejemplo.c interruptor/P Ejemplo- cl/C

Lo anterior generará un archivo .I con el mismo nombre (sample.I). Ahora, para compilar el archivo .I, simplemente cambie el nombre del archivo .I a .C y luego haga cl/c para compilar y generar un archivo de objeto.

Cuestiones relacionadas