다음을 통해 공유


C++ 빌드 사용자 지정

Directory.Build.propsDirectory.Build.targets를 사용하여 공통 부모 폴더 아래의 모든 C++ 프로젝트를 사용자 지정할 수 있습니다. 폴더별 사용자 지정을 참조하세요. 또한 C++ 프로젝트는 다음과 같은 확장성 포인트를 갖추고 있습니다. 속성을 사용하여 Microsoft.Cpp.* 파일 앞이나 뒤에 자동으로 가져올 .props 또는 .targets 파일을 지정할 수 있습니다.

  • ForceImportAfterCppDefaultProps
  • ForceImportBeforeCppProps
  • ForceImportAfterCppProps
  • ForceImportBeforeCppTargets
  • ForceImportAfterCppTargets

이러한 가져오기를 통해 다른 속성에 종속된 속성 또는 다른 대상에 종속된 대상의 정의 시퀀스를 제어할 수 있습니다. .vcxproj의 가져오기 순서는 다음과 같습니다.

   vcxproj
      Microsoft.Cpp.default.props
         Microsoft.Common.props
            Directory.Build.props
      Microsoft.Cpp.props
      Microsoft.Cpp.targets
         Microsoft.Common.targets
            Directory.Build.targets

.vcxproj 및 .props 파일 구조를 참조하세요. Microsoft.Cpp.default.props 또는 Microsoft.Cpp.props에 정의된 다른 속성을 사용하는 속성을 정의해야 하는 경우 다른 .props 파일(예: MyProps.props)을 만들고 이를 가리키는 ForceImportAfterCppPropsDirectory.Build.props 속성을 정의할 수 있습니다.

<PropertyGroup>
  <ForceImportAfterCppProps>$(MSBuildThisFileDirectory)\MyProps.props</ForceImportAfterCppProps>
</PropertyGroup>

MyProps.propsMicrosoft.Cpp.props의 맨 끝에서 자동으로 가져옵니다.

모든 C++ 빌드 사용자 지정

Visual Studio 설치 사용자 지정은 해당 사용자 지정을 추적하기 쉽지 않아서 권장되지 않지만, Visual Studio를 확장하여 특정 플랫폼의 C++ 빌드를 사용자 지정하는 경우 각 플랫폼의 .targets 파일을 만들어 해당 플랫폼의 적절한 가져오기 폴더에 Visual Studio 확장의 일부로 배치할 수 있습니다.

Win32 플랫폼용 .targets 파일인 Microsoft.Cpp.Win32.targets에는 다음 Import 요소가 포함되어 있습니다.

<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportBefore\*.targets"
        Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportBefore')"
/>

같은 파일의 끝에는 비슷한 요소가 있습니다.

<Import Project="$(VCTargetsPath)\Platforms\Win32\ImportAfter\*.targets"
        Condition="Exists('$(VCTargetsPath)\Platforms\Win32\ImportAfter')"
/>

*%ProgramFiles32%\MSBuild\Microsoft.Cpp\v{version}\Platforms*에는 다른 대상 플랫폼을 위한 비슷한 import 요소가 있습니다.

플랫폼에 따라 적절한 ImportAfter 폴더에 .targets 파일을 배치하면 MSBuild는 해당 플랫폼의 모든 C++ 빌드에 해당 파일을 가져옵니다. 필요한 경우, 여기에 여러 .targets 파일을 넣을 수 있습니다.

Visual Studio 확장성을 사용하여 새 플랫폼을 정의하는 등의 추가 사용자 지정을 수행할 수 있습니다. 자세한 내용은 C++ 프로젝트 확장성을 참조하세요.

명령줄에서 사용자 지정 가져오기 지정

C++ 프로젝트의 특정 빌드에 포함하려는 사용자 지정 .targets의 경우 명령줄에서 ForceImportBeforeCppTargets 속성과 ForceImportAfterCppTargets 속성 중 하나 또는 둘 모두를 설정합니다.

msbuild /p:ForceImportBeforeCppTargets="C:\build\config\Custom.Before.Microsoft.Cpp.Targets" MyCppProject.vcxproj

(예를 들어 빌드 서버의 플랫폼에 대한 모든 C++ 빌드에 영향을 주기 위한) 전역 설정의 경우, 두 가지 방법이 있습니다. 첫째, 항상 설정되어 있는 시스템 환경 변수를 사용하여 이러한 속성을 설정할 수 있습니다. MSBuild는 항상 환경을 읽고 모든 환경 변수의 속성을 만들거나 재정의하기 때문에 이 방법은 효과적입니다.