Partilhar via


Como: Usar eventos de compilação em projetos do MSBuild

Um evento de compilação é um comando que o MSBuild executa em um estágio específico no processo de compilação. O evento pre-build ocorre antes do início da compilação; o evento pre-link ocorre antes do início da etapa do link; e o evento post-build ocorre após o término bem-sucedido da compilação. Um evento de compilação ocorre somente se a etapa de compilação associada ocorrer. Por exemplo, o evento de pré-ligação não ocorre se a etapa de ligação 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 de comando (<Command>) que é executado e um elemento de mensagem (<Message>) que é exibido quando o 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 opcional use-in-build (<build-eventUseInBuild>) pode ser especificado num grupo de propriedades para indicar se o evento de build é executado. O valor do conteúdo de um elemento use-in-build é ou true ou false. Por padrão, um evento build é executado, a menos que seu elemento use-in-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 use-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é-link deve ser executado.
PostBuildEventUseInBuild Especifica se o evento pós-compilação deve ser executado.

Exemplo

O exemplo a seguir pode ser adicionado dentro do elemento Project do arquivo myproject.vcxproj criado em Passo a passo: Usando MSBuild para criar um projeto C++. Um evento de pré-compilação faz uma cópia de main.cpp; um evento de pré-ligação faz uma cópia de 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 é construído usando uma configuração de depuração, os eventos de compilação não sã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>

Ver também

MSBuild na linha de comando - C++
Passo a passo: Usando o MSBuild para criar um projeto C++