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
, CONFIGURATION
LIBPATH
및 PLATFORM
환경 변수를 재정의PATH
합니다. 환경 변수가 UseEnv
재정의되지 않도록 하려면 true
속성을 설정합니다.
msbuild myProject.vcxproj /p:UseEnv=true
대상
Visual Studio 지원 파일에는 수백 가지 대상이 있습니다. 그러나 대부분은 사용자가 무시할 수 있는 시스템 기반 대상입니다. 대부분의 시스템 대상에는 밑줄(_
)이 접두사로 지정되거나 , Compute
, Before
, After
Pre
또는 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
과업