Cómo: Usar eventos de compilación en proyectos de MSBuild
Un evento de compilación es un comando que MSBuild ejecuta en una fase concreta del proceso de compilación. El evento anterior a la compilación se produce antes de que comience la compilación, el evento anterior a la vinculación se produce antes de que comience el paso de vinculación y el evento posterior a la compilación se produce justo después de que la compilación finalice sin errores. Un evento de compilación únicamente se produce si se produce el paso de compilación asociado. Por ejemplo, el evento anterior a la vinculación no se produce si no se ejecuta el paso de vinculación.
Cada uno de los tres eventos de compilación se representa en un grupo de definición de elementos mediante un elemento de comando (<Command>) que se ejecuta y un elemento de mensaje (<Message>) que se muestra cuando MSBuild ejecuta el evento de compilación. Cada elemento es opcional y, si se especifica el mismo elemento varias veces, la última tiene prioridad.
Se puede especificar el elemento opcional use-in-build (<evento de compilaciónUseInBuild>) en un grupo de propiedades para indicar si se ejecuta el evento de compilación. El valor del contenido de un elemento use-in-build es true o false. De forma predeterminada, un evento de compilación se ejecuta a menos que su elemento use-in-build esté establecido en false.
En la siguiente tabla se incluye cada elemento XML del evento de compilación:
Elemento XML |
Descripción |
---|---|
PreBuildEvent |
Este evento se ejecuta antes de que comience la compilación. |
PreLinkEvent |
Este evento se ejecuta antes de que comience el paso de vinculación. |
PostBuildEvent |
Este evento se ejecuta cuando finaliza la compilación. |
En la siguiente tabla se incluye cada elemento use-in-build:
Elemento XML |
Descripción |
---|---|
PreBuildEventUseInBuild |
Especifica si se debe ejecutar el evento anterior a la compilación. |
PreLinkEventUseInBuild |
Especifica si se debe ejecutar el evento anterior a la vinculación. |
PostBuildEventUseInBuild |
Especifica si se debe ejecutar el evento posterior a la compilación. |
Ejemplo
El siguiente ejemplo se puede agregar dentro del elemento Project del archivo myproject.vcxproj creado en Tutorial: Usar MSBuild para crear un proyecto de Visual C++. Un evento anterior a la compilación realiza una copia de main.cpp, un evento anterior a la vinculación realiza una copia de main.obj y un evento posterior a la compilación realiza una copia de myproject.exe. Si el proyecto se compila con una configuración de lanzamiento, se ejecutan los eventos de compilación. Si el proyecto se compila con una configuración de depuración, no se ejecutan los eventos de compilación.
<ItemDefinitionGroup>
<PreBuildEvent>
<Command>copy $(ProjectDir)main.cpp $(ProjectDir)copyOfMain.cpp</Command>
<Message>Making a copy of main.cpp </Message>
</PreBuildEvent>
<PreLinkEvent>
<Command>copy $(ProjectDir)$(Configuration)\main.obj $(ProjectDir)$(Configuration)\copyOfMain.obj</Command>
<Message>Making a copy of main.obj</Message>
</PreLinkEvent>
<PostBuildEvent>
<Command>copy $(ProjectDir)$(Configuration)\$(TargetFileName) $(ProjectDir)$(Configuration)\copyOfMyproject.exe</Command>
<Message>Making a copy of myproject.exe</Message>
</PostBuildEvent>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<PreBuildEventUseInBuild>true</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>true</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<PreBuildEventUseInBuild>false</PreBuildEventUseInBuild>
<PreLinkEventUseInBuild>false</PreLinkEventUseInBuild>
<PostBuildEventUseInBuild>false</PostBuildEventUseInBuild>
</PropertyGroup>
Vea también
Tareas
Tutorial: Usar MSBuild para crear un proyecto de Visual C++