Compartir a través de


Especificar los pasos de compilación personalizada

Actualización: noviembre 2007

Los pasos de generación personalizada proporcionan al sistema de generación la información que necesita para generar archivos de resultados a partir de un archivo de entrada. Los pasos de generación personalizada se adjuntan a sus archivos de entrada; contienen los comandos que se van a ejecutar, una lista de los archivos de resultados que generan dichos comandos y, de manera opcional, una descripción del comando.

Para obtener más información acerca de los pasos de generación personalizada, vea Introducción a los pasos de generación personalizada y los eventos de generación.

Para especificar un paso de generación personalizada

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para obtener más información, vea Establecer las propiedades de un proyecto de Visual C++.

  2. En el cuadro Configuración, seleccione la configuración para la que desee especificar un paso de generación personalizada.

  3. En el Explorador de soluciones, seleccione un archivo de entrada para el paso.

    Si no aparece la carpeta Paso de generación personalizada, significa que el archivo seleccionado tiene asociado un paso predeterminado. Por ejemplo, los archivos .c y .cpp tienen un paso predeterminado para invocar el compilador. Para reemplazar una configuración predeterminada, modifique la propiedad Tool, que se encuentra en la carpeta Opciones de configuración.

  4. Especifique las propiedades asociadas al paso de generación personalizada:

    • En Dependencias adicionales, especifique los archivos adicionales además del archivo para el que se esté definiendo el paso de generación personalizada (el archivo asociado al paso de generación personalizada se considera implícitamente una entrada del paso). Los archivos de entrada adicionales no son necesarios para especificar un paso de generación personalizada. Si hay varias entradas adicionales, deberá separarlas con punto y coma.

      Si la fecha de un archivo de Dependencias adicionales es posterior a la del archivo de entrada, se ejecutará la regla de generación personalizada. Si todos los archivos de Dependencias adicionales son posteriores al archivo de entrada y éste es posterior al archivo de Resultados, no se ejecutará el paso de generación personalizada.

      Por ejemplo, suponga que dispone de un paso de generación personalizada que recibe MyInput.x como entrada y genera MyInput.cpp, y que MyInput.x incluye un archivo de encabezado, MyHeader.h. Puede especificar MyHeader.h como dependencia de entrada para MyInput.x, con lo que el sistema de generación generará MyInput.cpp cuando éste se encuentre desactualizado con respecto a MyInput.x o MyHeader.h.

      Las dependencias de entrada también pueden asegurar la ejecución de los pasos de generación personalizada en el orden necesario. En el ejemplo anterior, supongamos que MyHeader.h es, en realidad, el resultado de un paso de generación personalizada. Al ser MyHeader.h una dependencia de MyInput.x, el sistema de generación, antes de ejecutar el paso de generación personalizada en MyInput.x, generará primero Myheader.h.

    • En Línea de comandos, especifique la sintaxis de la regla de generación personalizada. La sintaxis puede incluir cualquier comando que sea válido en la línea de comandos o en un archivo .bat. Quizá le resulte conveniente usar Macros para propiedades y comandos de generación para, en caso de selecciones múltiples, poder especificar la ubicación de archivos u obtener el nombre real del archivo de entrada. El nombre de los archivos de proceso por lotes deberá ir precedido por call para garantizar la ejecución de todos los comandos posteriores.

    • En Descripción, escriba una descripción del paso de generación personalizada. Cuando el sistema de generación procese el paso, esta descripción aparecerá en la ventana Resultados.

    • En Resultados, especifique el nombre del archivo de resultados. Esta entrada es obligatoria; si esta propiedad no tiene un valor, el paso de generación personalizada no se ejecutará. Si un paso de generación personalizada tiene varios resultados, deberá separar los nombres de los archivos con punto y coma.

      El nombre del archivo de resultados debe ser el especificado en la propiedad Línea de comandos. El sistema de generación del proyecto buscará el archivo y comprobará su fecha. Si el archivo es más reciente que el archivo de entrada o si no se encuentra, se ejecutará el paso de generación personalizada. Si todos los archivos de Dependencias adicionales son posteriores al archivo de entrada y éste es posterior al archivo de Resultados, no se ejecutará el paso de generación personalizada.

Si desea que el sistema de generación actúe en un archivo de resultados generado por el paso de generación personalizada, deberá agregarlo manualmente al proyecto. El paso de generación personalizada actualizará el archivo durante la generación.

Ejemplo

Suponga que desea incluir en el proyecto un archivo denominado parser.l. Además, desea que un analizador léxico procese parser.l y produzca un archivo .c con el mismo nombre base (parser.c).

En primer lugar, agregue parser.l y parser.c al proyecto. Si los archivos todavía no existen, simplemente agregue una referencia a ellos. Cree un paso de generación personalizada para parser.l y escriba lo siguiente en la propiedad Comandos:

lexer $(InputPath) .\$(InputName).c

Este comando ejecuta el analizador léxico sobre parser.l y produce parser.c en el directorio del proyecto.

En la propiedad Resultados, escriba lo siguiente:

.\$(InputName).c

Cuando genera el proyecto, el sistema de generación compara las marcas de hora de parser.l y parser.c. Si parser.l es más reciente, o si parser.c no existe, el sistema de generación ejecuta la propiedad Command para actualizar parser.c. Al estar parser.c también agregado al proyecto, el sistema de generación pasará a compilarlo.

Vea también

Referencia

Solución de problemas de pasos de compilación personalizada y eventos de compilación

Otros recursos

Macros para propiedades y comandos de compilación