Практическое руководство. Использование событий построения в проектах MSBuild
Событие построения — это команда, которую MSBuild выполняет на определенном этапе процесса построения. Событие перед построением возникает перед началом построения; событие перед компоновкой возникает перед началом этапа компоновки; событие после построения возникает после успешного окончания построения. Событие построения возникает, только если происходит связанный с ним этап построения. Например, событие перед компоновкой не возникает, если этап компоновки не выполняется.
Каждое из этих трех событий построения представлено в группе определения элементов элементом команды (<Command>) и элементом сообщения (<Message>). Элемент команды выполняется, а элемент сообщения отображается, когда MSBuild выполняет событие построения. Эти элементы являются необязательными, и если указать один элемент несколько раз, то преимущество будет иметь последний.
В группе свойств можно задать необязательный элемент использовать при построении (<событие_построенияUseInBuild>), который указывает, выполняется ли данное событие построения. Элемент использовать при построении имеет значение true или false. По умолчанию событие построения выполняется, если для соответствующего ему элемента использовать при построении не задано значение false.
В следующей таблице приведены все XML-элементы события построения.
XML-элемент |
Описание |
---|---|
PreBuildEvent |
Данное событие выполняется до начала построения. |
PreLinkEvent |
Данное событие выполняется до начала этапа компоновки. |
PostBuildEvent |
Данное событие выполняется после окончания построения. |
В следующей таблице приведены все элементы использовать при построении.
XML-элемент |
Описание |
---|---|
PreBuildEventUseInBuild |
Указывает, следует ли выполнять событие перед построением. |
PreLinkEventUseInBuild |
Указывает, следует ли выполнять событие перед компоновкой. |
PostBuildEventUseInBuild |
Указывает, следует ли выполнять событие после построения. |
Пример
Следующий пример можно добавить в элемент Project файла myproject.vcxproj, созданного в руководстве Пошаговое руководство. Использование MSBuild для создания проекта Visual C++. Событие перед построением создает копию main.cpp; событие перед компоновкой создает копию main.obj; событие после построения создает копию myproject.exe. Если построение проекта выполняется с помощью конфигурации выпуска, то события построения выполняются. Если построение проекта выполняется с помощью конфигурации отладки, то события построения не выполняются.
<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>
См. также
Задачи
Пошаговое руководство. Использование MSBuild для создания проекта Visual C++