C++ 프로젝트용 MSBuild 내부

IDE에서 프로젝트 속성을 설정한 다음, 다음 프로젝트를 저장하는 경우 Visual Studio는 프로젝트 설정을 프로젝트 파일에 씁니다. 프로젝트 파일에는 프로젝트에 고유한 설정이 포함되어 있습니다. 그러나 프로젝트를 빌드하는 데 필요한 모든 설정이 포함되지는 않습니다. 프로젝트 파일에는 Import 추가 지원 파일의 네트워크가 포함된 요소가 포함되어 있습니다. 지원 파일에는 프로젝트를 빌드하는 데 필요한 다시 기본 속성, 대상 및 설정이 포함됩니다.

지원 파일의 대부분의 대상 및 속성은 빌드 시스템을 구현하는 용도로 존재합니다. 이 문서에서는 MSBuild 명령줄에서 지정할 수 있는 유용한 대상 및 속성에 대해 설명합니다. 더 많은 대상과 속성을 검색하려면 지원 파일 디렉터리에서 파일을 살펴봅니다.

지원 파일 디렉터리

기본적으로 기본 Visual Studio 지원 파일은 다음 디렉터리에 있습니다. 이 정보는 버전별로 다릅니다.

Visual Studio 2022 및 2019

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\

    대상에서 사용하는 기본 대상 파일(.targets) 및 속성 파일(.props)을 포함합니다. 기본적으로 매크로는 $(VCTargetsPath) 이 디렉터리를 참조합니다. <version> 자리 표시자는 Visual Studio 2022용 v170, Visual Studio 2019용 v160 또는 Visual Studio 2017용 v150 버전을 참조합니다.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\

    해당 부모 디렉터리의 대상과 속성을 재정의하는 플랫폼별 대상 및 속성 파일을 포함합니다. 이 디렉터리에는 이 디렉터리에 있는 대상에서 사용되는 작업을 정의하는 DLL도 포함됩니다. <platform> 자리 표시자는 ARM, ARM64, Win32 또는 x64 하위 디렉터리를 나타냅니다.

  • %VSINSTALLDIR%MSBuild\Microsoft\VC\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    지정된 <toolset>애플리케이션을 사용하여 빌드에서 C++ 애플리케이션을 생성할 수 있도록 하는 디렉터리를 포함합니다. <platform> 자리 표시자는 ARM, ARM64, Win32 또는 x64 하위 디렉터리를 나타냅니다. <toolset> 자리 표시자는 도구 집합 하위 디렉터리를 나타냅니다.

Visual Studio 2017

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\

    대상에서 사용하는 기본 대상 파일(.targets) 및 속성 파일(.props)을 포함합니다. 기본적으로 매크로는 $(VCTargetsPath) 이 디렉터리를 참조합니다.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\

    해당 부모 디렉터리의 대상과 속성을 재정의하는 플랫폼별 대상 및 속성 파일을 포함합니다. 이 디렉터리에는 이 디렉터리에 있는 대상에서 사용되는 작업을 정의하는 DLL도 포함됩니다. <platform> 자리 표시자는 ARM, ARM64, Win32 또는 x64 하위 디렉터리를 나타냅니다.

  • %VSINSTALLDIR%Common7\IDE\VC\VCTargets\Platforms\<platform>\PlatformToolsets\<toolset>\

    지정된 <toolset>애플리케이션을 사용하여 빌드에서 C++ 애플리케이션을 생성할 수 있도록 하는 디렉터리를 포함합니다. <platform> 자리 표시자는 ARM, Win32 또는 x64 하위 디렉터리를 나타냅니다. <toolset> 자리 표시자는 도구 집합 하위 디렉터리를 나타냅니다.

Visual Studio 2015 및 이전 버전

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\

    대상에서 사용하는 기본 대상 파일(.targets) 및 속성 파일(.props)을 포함합니다. 기본적으로 $(VCTargetsPath) 매크로는 이 디렉터리를 참조합니다.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\

    해당 부모 디렉터리의 대상과 속성을 재정의하는 플랫폼별 대상 및 속성 파일을 포함합니다. 이 디렉터리에는 이 디렉터리에 있는 대상에서 사용되는 작업을 정의하는 DLL도 포함됩니다. <platform> 자리 표시자는 ARM, Win32 또는 x64 하위 디렉터리를 나타냅니다.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\<version>\Platforms\<platform>\PlatformToolsets\<toolset>\

    지정된 <toolset>애플리케이션을 사용하여 빌드에서 C++ 애플리케이션을 생성할 수 있도록 하는 디렉터리를 포함합니다. <version> 자리 표시자는 Visual Studio 2012용 V110, Visual Studio 2013용 V120 및 Visual Studio 2015용 V140입니다. <platform> 자리 표시자는 ARM, Win32 또는 x64 하위 디렉터리를 나타냅니다. <toolset> 자리 표시자는 도구 집합 하위 디렉터리를 나타냅니다. 예를 들어 Visual Studio 2015 도구 집합을 사용하여 Windows 앱을 빌드하기 위한 v140입니다. 또는 Visual Studio 2013 도구 집합을 사용하여 Windows XP용으로 빌드할 v120_xp 있습니다.

  • <drive>:\Program Files[ (x86)]\MSBuild\Microsoft.Cpp\v4.0\Platforms\<platform>\PlatformToolsets\<toolset>\

    빌드에서 Visual Studio 2008 또는 Visual Studio 2010 애플리케이션을 생성할 수 있도록 하는 경로는 포함되지 <version>않습니다. 이러한 버전 <platform> 에서 자리 표시자는 Itanium, Win32 또는 x64 하위 디렉터리를 나타냅니다. <toolset> 자리 표시자는 v90 또는 v100 도구 집합 하위 디렉터리를 나타냅니다.

설치 파일

지원 파일 디렉터리에는 다음과 같은 확장을 사용하는 파일이 포함되어 있습니다.

내선 번호 설명
.targets 대상에서 실행되는 작업을 지정하는 Target XML 요소를 포함합니다. 또한 파일 및 명령줄 옵션을 작업 매개 변수에 할당하는 데 사용되는 PropertyGroup, ItemGroup, ItemDefinitionGroup 및 사용자 정의 Item 요소를 포함할 수 있습니다.

자세한 내용은 요소(MSBuild)를 참조 Target 하세요.
.props 빌드하는 동안 사용되는 파일 및 매개 변수 설정을 지정하는 Property Group 및 사용자 정의 Property XML 요소를 포함합니다.

또한 추가 설정을 지정하는 ItemDefinitionGroup 및 사용자 정의 Item XML 요소를 포함할 수 있습니다. 항목 정의 그룹에 정의된 항목은 속성과 유사하지만 명령줄에서 액세스할 수 없습니다. Visual Studio 프로젝트 파일은 속성 대신 항목을 사용하여 설정을 나타내는 경우가 많습니다.

자세한 내용은 ItemGroup 요소(MSBuild), ItemDefinitionGroup 요소(MSBuild)Item 요소(MSBuild)를 참조하세요.
.xml IDE 사용자 인터페이스 요소를 선언하고 초기화하는 XML 요소를 포함합니다. 예를 들어 속성 시트, 속성 페이지, 텍스트 상자 컨트롤 및 listbox 컨트롤입니다.

파일은 .xml MSBuild가 아닌 IDE를 직접 지원합니다. 그러나 IDE 속성의 값은 빌드 속성과 항목에 할당됩니다.

대부분의 .xml 파일은 로캘별 하위 디렉터리에 있습니다. 예를 들어 영어-미국 지역에 대한 파일은 .에 있습니다 $(VCTargetsPath)\1033\.

사용자 대상 및 속성

MSBuild를 효과적으로 사용하려면 유용하고 관련성이 있는 속성과 대상을 파악하는 데 도움이 됩니다. 대부분의 속성과 대상은 Visual Studio 빌드 시스템을 구현하는 데 도움이 되며 사용자와 관련이 없습니다. 이 섹션에서는 사용자 지향 속성 및 알 만한 대상에 대해 설명합니다.

PlatformToolset 속성

PlatformToolset 속성은 빌드에 사용되는 MSVC 도구 집합을 결정합니다. 기본적으로 현재 도구 집합이 사용됩니다. 이 속성이 설정되면 해당 값이 리터럴 문자열과 연결되어 경로를 형성합니다. 특정 플랫폼에 대한 프로젝트를 빌드하는 데 필요한 속성 및 대상 파일이 포함된 디렉터리입니다. 해당 플랫폼 도구 집합 버전을 사용하여 빌드하려면 플랫폼 도구 집합을 설치해야 합니다.

예를 들어 Visual Studio 2015 도구 및 라이브러리를 사용하여 애플리케이션을 빌드하려면 PlatformToolset 속성을 v140으로 설정합니다.

msbuild myProject.vcxproj /p:PlatformToolset=v140

PreferredToolArchitecture 속성

PreferredToolArchitecture 속성은 32비트 또는 64비트 컴파일러 및 도구가 빌드에 사용되는지 여부를 결정합니다. 이 속성은 출력 플랫폼 아키텍처 또는 구성에 영향을 주지 않습니다. 기본적으로 MSBuild는 이 속성이 설정되지 않은 경우 x86 버전의 컴파일러 및 도구를 사용합니다.

예를 들어 64비트 컴파일러 및 도구를 사용하여 애플리케이션을 빌드하려면 PreferredToolArchitecture 속성을 x64로 설정합니다.

msbuild myProject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv 속성

기본적으로 현재 프로젝트에 대한 플랫폼별 설정은 , INCLUDE, LIB, CONFIGURATIONLIBPATHPLATFORM 환경 변수를 재정의PATH합니다. 환경 변수가 UseEnv 재정의되지 않도록 하려면 true 속성을 설정합니다.

msbuild myProject.vcxproj /p:UseEnv=true

Targets

Visual Studio 지원 파일에는 수백 가지 대상이 있습니다. 그러나 대부분은 사용자가 무시할 수 있는 시스템 기반 대상입니다. 대부분의 시스템 대상에는 밑줄(_)이 접두사로 지정되거나 , Compute, Before, AfterPre또는 Post.로 PrepareFor시작하는 이름이 있습니다.

다음 표에는 몇 가지 유용한 사용자 기반 대상이 나열되어 있습니다.

대상 설명
BscMake Microsoft 찾아보기 정보 유지 관리 유틸리티 도구를 bscmake.exe실행합니다.
Build 프로젝트를 빌드합니다.

이 대상은 프로젝트의 기본값입니다.
ClCompile MSVC 컴파일러 도구를 cl.exe실행합니다.
Clean 일시적이고 중간 빌드 파일을 삭제합니다.
Lib Microsoft 32비트 라이브러리 관리자 도구를 lib.exe실행합니다.
Link MSVC 링커 도구를 link.exe실행합니다.
ManifestResourceCompile 매니페스트에서 리소스 목록을 추출한 다음 Microsoft Windows 리소스 컴파일러 도구를 rc.exe실행합니다.
Midl MIDL(Microsoft Interface Definition Language) 컴파일러 도구를 midl.exe실행합니다.
Rebuild 프로젝트를 정리한 다음, 빌드합니다.
ResourceCompile Microsoft Windows 리소스 컴파일러 도구를 rc.exe실행합니다.
XdcMake XML 설명서 도구를 xdcmake.exe실행합니다.
Xsd XML 스키마 정의 도구를 xsd.exe실행합니다. 참고를 참조하세요.

참고 항목

Visual Studio 2017 이상에서는 파일에 대한 .xsd C++ 프로젝트 지원이 더 이상 사용되지 않습니다. GAC에 수동으로 추가하여 CppCodeProvider.dll 계속 사용할 Microsoft.VisualC.CppCodeProvider 수 있습니다.

참고 항목

MSBuild 작업 참조
BscMake 작업
CL 작업
CPPClean 작업
LIB 작업
Link 작업
MIDL 작업
MT 작업
RC 작업
SetEnv 작업
VCMessage 작업
XDCMake 작업