Como usar eventos de build em projetos de MSBuild

um evento de compilação é um comando que MSBuild executa em um estágio específico no processo de compilação. O evento de pré-compilação ocorre antes do início da compilação; o evento de pré-vínculo ocorre antes do início da etapa de link; e o evento de pós-compilação ocorre depois que a compilação é encerrada com êxito. Um evento de compilação ocorrerá somente se a etapa de compilação associada ocorrer. Por exemplo, o evento de pré-vínculo não ocorrerá se a etapa de vínculo não for executada.

cada um dos três eventos de compilação é representado em um grupo de definição de item por um elemento command ( <Command> ) que é executado e um elemento message ( <Message> ) que é exibido quando MSBuild executa o evento de compilação. 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 ( <compilação-eventoUseInBuild> ) pode ser especificado em um grupo de propriedades para indicar se o evento de compilação é executado. O valor do conteúdo de um elemento Use-in-Build é true ou false . Por padrão, um evento de compilação é executado, a menos que seu elemento de uso no Build correspondente esteja definido como false .

A tabela a seguir lista cada elemento XML do evento de compilação:

Elemento XML Descrição
PreBuildEvent Esse evento é executado antes do início da compilação.
PreLinkEvent Esse evento é executado antes do início da etapa de link.
PostBuildEvent Esse evento é executado após a conclusão da compilação.

A tabela a seguir lista cada elemento de uso-in-Build :

Elemento XML Descrição
PreBuildEventUseInBuild Especifica se o evento de pré-compilação deve ser executado.
PreLinkEventUseInBuild Especifica se o evento de pré-vínculo deve ser executado.
PostBuildEventUseInBuild Especifica se o evento de pós-compilação deve ser executado.

Exemplo

o exemplo a seguir pode ser adicionado dentro do elemento de Project do arquivo myproject. vcxproj criado em Walkthrough: usando MSBuild para criar um Project de C++. Um evento de pré-compilação faz uma cópia do Main. cpp; um evento de pré-vínculo faz uma cópia do Main. obj; e um evento de pós-compilação faz uma cópia de myproject.exe. Se o projeto for criado usando uma configuração de versão, os eventos de compilação serão executados. Se o projeto for criado usando uma configuração de depuração, os eventos de compilação 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>

Consulte também

MSBuild na linha de comando-C++
Walkthrough: usando MSBuild para criar um C++ Project