다음을 통해 공유


MSBuild(Visual C++) 개요

MSBuild는 Visual C++ 프로젝트용 표준 빌드 시스템입니다. Visual Studio IDE(통합 개발 환경)에서 프로젝트를 빌드할 때 msbuild.exe 도구, XML 기반 프로젝트 파일 및 선택적 설정 파일이 사용됩니다. msbuild.exe 및 프로젝트 파일을 명령줄에서 사용할 수 있지만 더 쉽게 설정을 구성하고 프로젝트를 빌드할 수 있도록 IDE에서 사용자 인터페이스를 제공합니다. 이 개요에서는 Visual C++에서 MSBuild 시스템을 사용하는 방법에 대해 설명합니다.

필수 구성 요소

MSBuild에 대한 다음 문서를 참조하십시오.

명령줄의 MSBuild

MSBuild 명령줄 참조 문서에 있는 다음 문에서는 msbuild.exe 도구가 암시적 또는 명시적 project file 인수(Visual C++ 프로젝트의 경우 .vcxproj 파일)와 0개 이상의 명령줄 options을 사용하는 방법을 보여 줍니다.

msbuild.exe [project file] [options]

/target 또는 /t/property 또는 /p 명령줄 옵션을 사용하여 프로젝트 파일에 지정된 속성과 대상을 재정의할 수 있습니다.

프로젝트 파일의 필수 기능은 프로젝트에 적용된 특정 작업인 대상과 해당 작업을 수행하는 데 필요한 입력 및 출력을 지정하는 것입니다. 프로젝트 파일은 하나 이상의 대상을 지정할 수 있으며 기본 대상을 포함할 수 있습니다.

각 대상은 하나 이상의 작업 시퀀스로 구성됩니다. 각 작업은 하나의 실행 가능 명령이 포함된 .NET Framework 클래스로 표현됩니다. 예를 들어 CL 작업에는 cl.exe 명령이 포함되어 있습니다.

작업 매개 변수는 클래스 작업의 속성이며 일반적으로 실행 가능 명령의 명령줄 옵션을 나타냅니다. 예를 들어 CL 작업의 FavorSizeOrSpeed 매개 변수는 /Os/Ot 컴파일러 옵션에 해당합니다.

추가 작업 매개 변수는 MSBuild 인프라를 지원합니다. 예를 들어 Sources 작업 매개 변수는 다른 작업에서 사용할 수 있는 일련의 작업을 지정합니다. MSBuild 작업에 대한 자세한 내용은 MSBuild 작업 참조를 참조하십시오.

대부분의 작업에는 파일 이름, 경로 및 문자열, 숫자 또는 부울 매개 변수와 같은 입력과 출력이 필요합니다. 예를 들어 일반적인 입력은 컴파일할 .cpp 소스 파일의 이름입니다. 중요한 입력 매개 변수는 빌드 구성 및 플랫폼을 지정하는 문자열(예: "Debug|Win32")입니다. 입력과 출력은 ItemGroup 요소에 포함된 하나 이상의 사용자 정의 XML Item 요소를 통해 지정됩니다.

프로젝트 파일은 사용자 정의 속성과 항목-정의-그룹 항목도 지정할 수 있습니다. 속성과 항목은 빌드에서 변수로 사용할 수 있는 이름/값 쌍을 구성합니다. 이름/값 쌍 중 이름 구성 요소는 매크로를 정의하고 값 구성 요소는 매크로 값을 선언합니다. 속성 매크로에는 $(name) 표기법을 사용하여 액세스하고 항목 매크로에는 %(name) 표기법을 사용하여 액세스합니다.

프로젝트 파일의 다른 XML 요소는 매크로를 테스트한 다음 조건부로 매크로의 값을 설정하거나 빌드 실행을 제어할 수 있습니다. 매크로 이름과 리터럴 문자열을 연결하여 경로 및 파일 이름과 같은 구문을 생성할 수 있습니다. 명령줄에서 /property 옵션은 프로젝트 속성을 설정하거나 재정의합니다. 명령줄에서 항목은 참조할 수 없습니다.

MSBuild 시스템은 다른 대상 이전이나 이후에 조건부로 대상을 실행할 수 있습니다. 또한 이 시스템에서는 대상이 사용하는 파일이 대상이 내보내는 파일보다 최신 버전인지 여부를 기반으로 대상을 빌드할 수 있습니다.

IDE의 MSBuild

IDE에서 프로젝트 속성을 설정한 다음 프로젝트를 저장하면 프로젝트 설정이 프로젝트 파일에 기록됩니다. 프로젝트 파일에는 프로젝트에 고유한 설정이 포함되어 있지만 프로젝트를 빌드하는 데 필요한 설정 중 일부가 포함되어 있지 않습니다. 프로젝트 파일에는 추가 지원 파일의 네트워크가 포함된 Import 요소가 포함되어 있습니다. 지원 파일에는 프로젝트를 빌드하는 데 필요한 나머지 속성, 대상 및 설정이 포함되어 있습니다.

지원 파일에 있는 대부분의 대상과 속성은 빌드 시스템을 구현하기 위한 것입니다. 다음 단원에서는 MSBuild 명령줄에서 지정할 수 있는 몇 가지 유용한 대상과 속성에 대해 설명합니다. 더 많은 대상과 속성을 찾으려면 지원 파일 디렉터리의 파일을 살펴보십시오.

지원 파일 디렉터리

기본적으로 기본 Visual C++ 지원 파일은 다음 디렉터리에 있습니다.

디렉터리

설명

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\

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

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\

부모 디렉터리의 대상과 속성을 재정의하는 플랫폼별 대상 및 속성 파일을 포함합니다. 이 디렉터리에는 이 디렉터리의 대상에 사용되는 작업을 정의하는 .dll 파일도 포함되어 있습니다.

platform 자리 표시자는 ARM, Win32 또는 x64 하위 디렉터리를 나타냅니다.

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\version\Platforms\platform\PlatformToolsets\toolset\

빌드를 사용하여 도구 집합의 version이 지정된 Visual C++ 응용 프로그램을 생성할 수 있는 디렉터리를 포함합니다.

platform 자리 표시자는 ARM, Win32 또는 x64 하위 디렉터리를 나타냅니다. toolset 자리 표시자는 Windows, Windows XP 또는 Windows Phone 응용 프로그램을 빌드하기 위한 도구 집합 하위 디렉터리를 나타냅니다.

drive:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\platform\PlatformToolsets\toolset\

빌드를 사용하여 9.0 또는 Visual C++ 10.0 응용 프로그램을 생성할 수 있는 디렉터리를 포함합니다.

platform 자리 표시자는 Itanium, Win32 또는 x64 하위 디렉터리를 나타냅니다. toolset 자리 표시자는 v90 또는 v100 도구 집합의 하위 디렉터리를 나타냅니다.

지원 파일

지원 파일 디렉터리에는 다음 확장명의 파일이 포함되어 있습니다.

확장명

설명

.targets

대상에서 실행되는 작업을 지정하는 Target XML 요소를 포함합니다. 파일 및 명령줄 옵션을 작업 매개 변수에 할당하는 데 사용되는 Property Group, Item Group, Item Definition Group 및 사용자 정의 Item 요소도 포함할 수 있습니다.

자세한 내용은 Target 요소(MSBuild)을 참조하십시오.

.props

빌드하는 동안 사용되는 파일 및 매개 변수 설정을 지정하는 Property Group 및 사용자 정의 Property XML 요소를 포함합니다.

추가 설정을 지정하는 Item Definition Group 및 사용자 정의 Item XML 요소도 포함할 수 있습니다. 항목 정의 그룹에 정의된 항목은 속성과 비슷하지만 명령줄에서 이 항목에는 액세스할 수 없습니다. Visual C++ 프로젝트 파일은 속성 대신 항목을 사용하여 설정을 나타냅니다.

자세한 내용은 ItemGroup 요소(MSBuild), ItemDefinitionGroup 요소(MSBuild)Item 요소(MSBuild)를 참조하십시오.

.xml

속성 시트 및 속성 페이지와 텍스트 상자 및 목록 상자 컨트롤과 같은 IDE 사용자 인터페이스 요소를 선언하고 초기화하는 XML 요소를 포함합니다.

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

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

사용자 대상 및 속성

유용하고 관련된 속성과 대상을 알면 명령줄에서 MSBuild를 효과적으로 사용하는 데 도움이 됩니다. 대부분의 속성과 대상은 Visual C++ 빌드 시스템을 구현하는 데 도움이 되므로 결과적으로 사용자와는 관련이 없습니다. 이 단원에서는 유용한 몇 가지 사용자 기반 속성 및 대상에 대해 설명합니다.

PlatformToolset 속성

PlatformToolset 속성에 따라 빌드에 사용되는 Visual C++ 도구 집합이 결정됩니다. 속성 값은 리터럴 문자열과 연결되어 특정 플랫폼용 프로젝트를 빌드하는 데 필요한 속성 및 대상 파일이 포함된 디렉터리의 경로를 구성합니다.

Visual Studio 2012의 Visual C++ 도구 및 라이브러리를 사용해서 응용 프로그램을 빌드하려면 PlatformToolset 속성을 v110으로 설정합니다.

msbuild myProject.vcxproj /p:PlatformToolset=v110

Visual C++ 2010 도구 및 라이브러리를 사용해서 응용 프로그램을 빌드하려면 PlatformToolset 속성을 v100으로 설정합니다.

msbuild myProject.vcxproj /p:PlatformToolset=v100

Visual C++ 2008 도구 및 라이브러리를 사용하여 응용 프로그램을 빌드하려면 PlatformToolset 속성을 v90으로 설정합니다. 이 속성을 적용하려면 Visual C++ 2008 도구 집합이 이미 컴퓨터에 설치되어 있어야 합니다.

msbuild myProject.vcxproj /p:PlatformToolset=v90

PreferredToolArchitecture 속성

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

64 비트 컴파일러와 도구를 사용하고 응용 프로그램을 빌드하려면 PreferredToolArchitecture 속성을 x64로 설정합니다.

msbuild myproject.vcxproj /p:PreferredToolArchitecture=x64

UseEnv 속성

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

msbuild myProject.vcxproj /p:UseEnv=true

대상

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

다음 표에서는 유용한 몇 가지 사용자 기반 대상을 보여 줍니다.

대상

설명

BscMake

Microsoft Browse Information Maintenance Utility 도구인 bscmake.exe를 실행합니다.

Build

프로젝트를 빌드합니다.

프로젝트의 기본 대상입니다.

ClCompile

Visual C++ 컴파일러 도구인 cl.exe를 실행합니다.

정리

임시 빌드 파일과 중간 빌드 파일을 삭제합니다.

Lib

Microsoft 32-Bit Library Manager 도구인 lib.exe를 실행합니다.

링크

Visual C++ 링커 도구인 link.exe를 실행합니다.

ManifestResourceCompile

매니페스트에서 리소스 목록을 추출한 다음 Microsoft Windows Resource Compiler 도구인 rc.exe를 실행합니다.

Midl

MIDL(Microsoft Interface Definition Language) 컴파일러 도구인 midl.exe를 실행합니다.

다시 빌드

프로젝트를 정리한 다음 빌드합니다.

ResourceCompile

Microsoft Windows Resource Compiler 도구인 rc.exe를 실행합니다.

XdcMake

XML 문서 도구인 xdcmake.exe를 실행합니다.

Xsd

XML 스키마 정의 도구인 xsd.exe를 실행합니다.

참고 항목

기타 리소스

MSBuild(Visual C++)