다음을 통해 공유


방법: MSBuild 프로젝트에서 빌드 이벤트 사용

빌드 이벤트는 빌드 프로세스의 특정 단계에서 MSBuild가 수행하는 명령입니다. 빌드 전 이벤트는 빌드가 시작되기 전에 발생하고, 링크 전 이벤트는 링크 단계가 시작되기 전에 발생하며, 빌드 후 이벤트는 빌드가 완료된 후 발생합니다. 빌드 이벤트는 연관된 빌드 단계가 수행되는 경우에만 발생합니다. 예를 들어, 링크 단계가 실행되지 않으면 링크 전 이벤트는 발생하지 않습니다.

세 가지 빌드 이벤트는 실행되는 명령 요소(<Command>) 및 MSBuild가 빌드 이벤트를 수행할 때 표시되는 메시지 요소(<Message>)로 항목 정의 그룹에서 각각 표현됩니다. 각 요소는 선택적이며, 동일한 요소를 여러 번 지정할 경우 마지막으로 지정된 요소가 우선합니다.

선택적인 빌드에 사용 요소(<build-eventUseInBuild>)는 빌드 이벤트 실행 여부를 나타내기 위해 속성 그룹에 지정될 수 있습니다. 빌드에 사용 요소의 내용은 true 또는 false 값을 가집니다. 기본적으로 빌드 이벤트는 상응하는 빌드에 사용 요소가 false로 설정되어 있지 않으면 실행됩니다.

다음 표에는 각 빌드 이벤트 XML 요소가 나열되어 있습니다.

XML 요소

설명

PreBuildEvent

이 이벤트는 빌드 시작 전에 실행됩니다.

PreLinkEvent

이 이벤트는 링크 단계 시작 전에 실행됩니다.

PostBuildEvent

이 이벤트는 빌드 완료 후에 실행됩니다.

다음 표에는 각 빌드에 사용 요소가 나열되어 있습니다.

XML 요소

설명

PreBuildEventUseInBuild

빌드 전 이벤트를 실행할지 여부를 지정합니다.

PreLinkEventUseInBuild

링크 전 이벤트를 실행할지 여부를 지정합니다.

PostBuildEventUseInBuild

빌드 후 이벤트를 실행할지 여부를 지정합니다.

예제

다음 예제는 연습: MSBuild를 사용하여 Visual C++ 프로젝트 만들기에서 만든 myproject.vcxproj 파일의 Project 요소 내부에 추가할 수 있습니다. 빌드 전 이벤트는 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++ 프로젝트 만들기

기타 리소스

MSBuild(Visual C++)