Como usar eventos de build em projetos do MSBuild
Um evento de build é um comando que o MSBuild executa em um estágio específico no processo de build. O evento pré-build ocorre antes do início do build; o evento pré-link ocorre antes do início da etapa de link; e o evento pós-build ocorre após o término do build com êxito. Um evento de build ocorrerá somente se a etapa de build associada ocorrer. Por exemplo, o evento de pré-link não ocorrerá se a etapa de link não for executada.
Cada um dos três eventos de build é representado em um grupo de definição de item por um elemento de comando (<Command>
) executado e um elemento de mensagem (<Message>
) que é exibido quando o MSBuild executa o evento de build. Cada elemento é opcional e, se você especificar o mesmo elemento várias vezes, a última ocorrência terá precedência.
Um elemento use-in-build opcional (<
build-eventUseInBuild>
) pode ser especificado em um grupo de propriedades para indicar se o evento de build é executado. O valor do conteúdo de um elemento use-in-build é true
ou false
. Por padrão, um evento de build é executado, a menos que seu elemento use-in-build correspondente seja definido como false
.
A tabela a seguir lista cada elemento XML de evento de build:
Elemento XML | Descrição |
---|---|
PreBuildEvent |
Esse evento é executado antes do início do build. |
PreLinkEvent |
Esse evento é executado antes do início da etapa de link. |
PostBuildEvent |
Esse evento é executado após a conclusão do build. |
A tabela a seguir lista cada elemento use-in-build:
Elemento XML | Descrição |
---|---|
PreBuildEventUseInBuild |
Especifica se o evento pré-build deve ser executado. |
PreLinkEventUseInBuild |
Especifica se o evento pré-link deve ser executado. |
PostBuildEventUseInBuild |
Especifica se o evento pós-build deve ser executado. |
Exemplo
O exemplo a seguir pode ser adicionado dentro do elemento Project do arquivo myproject.vcxproj criado em Passo a passo: Usar o MSBuild para criar um projeto do C++. Um evento pré-build faz uma cópia do main.cpp; um evento de pré-link faz uma cópia de main.obj; e um evento pós-build faz uma cópia do myproject.exe. Se o projeto for criado usando uma configuração de lançamento, os eventos de build serão executados. Se o projeto for criado usando uma configuração de depuração, os eventos de build não serão executados.
<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>
Confira também
MSBuild na linha de comando – C++
Passo a passo: Usar o MSBuild para criar um projeto do C++