Nasıl Yapılır: MSBuild Projelerinde Derleme Olaylarını Kullanma
Derleme olayı, MSBuild'in derleme işleminin belirli bir aşamasında gerçekleştirdiği bir komutdur. Derleme öncesi olayı derleme başlamadan önce gerçekleşir; bağlantı adımı başlamadan önce bağlantı öncesi olay gerçekleşir ve derleme başarıyla sona erdikten sonra derleme sonrası olay gerçekleşir. Derleme olayı yalnızca ilişkili derleme adımı gerçekleşirse gerçekleşir. Örneğin, bağlantı adımı çalışmazsa bağlantı öncesi olayı gerçekleşmez.
Üç derleme olayının her biri, yürütülen bir komut öğesi (<Command>
) ve MSBuild derleme olayını gerçekleştirdiğinde görüntülenen bir ileti öğesi (<Message>
) ile bir öğe tanım grubunda temsil edilir. Her öğe isteğe bağlıdır ve aynı öğeyi birden çok kez belirtirseniz, son oluşum önceliklidir.
Derleme olayının yürütülp yürütülmediğini göstermek için bir özellik grubunda isteğe bağlı bir derleme içinde kullanım öğesi (<
build-eventUseInBuild>
) belirtilebilir. Derlemede kullanım öğesinin içeriğinin değeri veya false
şeklindedirtrue
. Varsayılan olarak, bir derleme olayı, ilgili derlemede kullanım öğesi olarak ayarlanmadığı false
sürece yürütülür.
Aşağıdaki tabloda her derleme olayı XML öğesi listelenir:
XML Öğesi | Açıklama |
---|---|
PreBuildEvent |
Bu olay derleme başlamadan önce yürütülür. |
PreLinkEvent |
Bu olay, bağlantı adımı başlamadan önce yürütülür. |
PostBuildEvent |
Bu olay, derleme tamamlandıktan sonra yürütülür. |
Aşağıdaki tabloda derlemede kullanılan her öğe listelenir:
XML Öğesi | Açıklama |
---|---|
PreBuildEventUseInBuild |
Derleme öncesi olayının yürütülip yürütülmeyeceğini belirtir. |
PreLinkEventUseInBuild |
Bağlantı öncesi olayının yürütülip yürütülmeyeceğini belirtir. |
PostBuildEventUseInBuild |
Derleme sonrası olayının yürütülip yürütülmeyeceğini belirtir. |
Örnek
İzlenecek Yol'da oluşturulan myproject.vcxproj dosyasının Project öğesinin içine aşağıdaki örnek eklenebilir: C++ Projesi Oluşturmak için MSBuild Kullanma. Derleme öncesi olay main.cpp bir kopyasını oluşturur; bağlantı öncesi olay main.obj bir kopyasını oluşturur ve derleme sonrası olay da myproject.exe bir kopyasını oluşturur. Proje bir yayın yapılandırması kullanılarak oluşturulduysa derleme olayları yürütülür. Proje bir hata ayıklama yapılandırması kullanılarak oluşturulduysa, derleme olayları yürütülür.
<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>
Ayrıca bkz.
Komut satırında MSBuild - C++
İzlenecek yol: C++ Projesi Oluşturmak için MSBuild Kullanma