Partager via


Comment : utiliser des événements de build dans des projets MSBuild

Un événement de build est une commande que MSBuild effectue à une étape particulière du processus de génération. L’événement de pré-build se produit avant le démarrage de la build ; l’événement de pré-liaison se produit avant le démarrage de l’étape du lien ; et l’événement post-build se produit après la fin de la génération. Un événement de build se produit uniquement si l’étape de génération associée se produit. Par exemple, l’événement de pré-liaison ne se produit pas si l’étape de lien ne s’exécute pas.

Chacun des trois événements de génération est représenté dans un groupe de définition d’élément par un élément de commande (<Command>) exécuté et un élément de message (<Message>) qui s’affiche lorsque MSBuild effectue l’événement de génération. Chaque élément est facultatif et si vous spécifiez le même élément plusieurs fois, la dernière occurrence est prioritaire.

Un élément use-in-build facultatif (<build-eventUseInBuild>) peut être spécifié dans un groupe de propriétés pour indiquer si l’événement de build est exécuté. La valeur du contenu d’un élément use-in-build est soit true false. Par défaut, un événement de build est exécuté, sauf si son élément use-in-build correspondant est défini falsesur .

Le tableau suivant répertorie chaque élément XML d’événement de build :

Élément XML Description
PreBuildEvent Cet événement s’exécute avant le début de la génération.
PreLinkEvent Cet événement s’exécute avant le début de l’étape du lien.
PostBuildEvent Cet événement s’exécute une fois la build terminée.

Le tableau suivant répertorie chaque élément use-in-build :

Élément XML Description
PreBuildEventUseInBuild Spécifie s’il faut exécuter l’événement de pré-build .
PreLinkEventUseInBuild Spécifie s’il faut exécuter l’événement de pré-liaison .
PostBuildEventUseInBuild Spécifie s’il faut exécuter l’événement post-build .

Exemple

L’exemple suivant peut être ajouté à l’intérieur de l’élément Project du fichier myproject.vcxproj créé dans la procédure pas à pas : utilisation de MSBuild pour créer un projet C++. Un événement de pré-build effectue une copie de main.cpp ; un événement de pré-liaison effectue une copie de main.obj ; et un événement post-build effectue une copie de myproject.exe. Si le projet est généré à l’aide d’une configuration de mise en production, les événements de build sont exécutés. Si le projet est généré à l’aide d’une configuration de débogage, les événements de génération ne sont pas exécutés.

<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>

Voir aussi

MSBuild sur la ligne de commande – C++
Procédure pas à pas : utilisation de MSBuild pour créer un projet C++