MSBuild 명령 및 속성에 대한 일반적인 매크로

설치 옵션에 따라 Visual Studio는 MSBuild 기반 .vcxproj Visual Studio 프로젝트에서 수백 개의 매크로를 사용할 수 있도록 할 수 있습니다. 매크로는 기본적으로 또는 파일 또는 .targets 프로젝트 설정에서 설정된 MSBuild 속성에 .props 해당합니다. 프로젝트의 속성 페이지 대화 상자에서 문자열이 허용되는 모든 위치에서 이러한 매크로를 사용할 수 있습니다. 이러한 매크로는 대/소문자를 구분하지 않습니다.

현재 속성 및 매크로 보기

현재 사용 가능한 모든 매크로를 표시하려면 프로젝트 속성을 선택하여 기본 메뉴에서 프로젝트>속성 페이지를 엽니다. 속성 페이지 대화 상자에서 매크로가 있는 항목을 선택합니다. 이름을 둘러싸는 달러 기호와 괄호로 매크로를 인식할 수 있습니다.

예를 들어 왼쪽 창에서 구성 속성>VC++ 디렉터리를 선택한 다음 오른쪽 창에서 디렉터리 포함을 선택합니다. Include 디렉터리에 대한 값은 다음과 같습니다$(VC_IncludePath);$(WindowsSDK_IncludePath);.

이 두 값을 둘러싼 달러 기호와 괄호는 매크로임을 나타냅니다. 이러한 두 매크로의 확장은 검색할 포함 디렉터리를 설정합니다.

디렉터리 포함을 선택하면 행 끝에 드롭다운이 나타납니다. 드롭다운 단추를 선택한 다음 편집을 선택합니다. 표시되는 디렉터리 포함 대화 상자에서 매크로>> 단추를 선택합니다.

그러면 대화 상자가 확장되어 각각에 대한 현재 값과 함께 Visual Studio에 표시되는 현재 속성 및 매크로 집합이 표시됩니다. 자세한 내용은 C++ 프로젝트 속성 페이지 참조의 사용자 정의 값 지정 섹션을 참조하세요.

Screenshot of the Visual Studio Include Directories dialog after choosing the Macros button.

오른쪽에는 $(AllowLocalNetworkLoopback)와 같은 Visual Studio 매크로 목록이 있습니다. 왼쪽 창에는 include 디렉터리 속성의 평가된 값이 표시됩니다. 아래쪽 창에는 포함 디렉터리 속성 값을 생성하기 위해 확장된 매크로(있는 경우)가 표시됩니다. 디렉터리 포함 매크로는 두 개의 다른 매크로인 $(VC_IncludePath)와 $(WindowsSDK_IncludePath)의 조합이므로 아래쪽 창에는 상속된 값으로 레이블이 지정된 두 개의 매크로가 나열됩니다.

일반 매크로 목록

이 표에서는 사용 가능한 매크로의 일반적으로 사용되는 하위 집합에 대해 설명합니다. 여기에 나열되지 않은 많은 항목이 있습니다. 매크로 대화 상자로 이동하여 프로젝트의 모든 속성과 현재 값을 확인합니다. MSBuild 속성 정의를 만들고 , .targets.vcxproj 파일에서 .props매크로로 사용하는 방법에 대한 자세한 내용은 MSBuild 속성을 참조하세요.

매크로 설명
$(Configuration) 현재 프로젝트 구성의 이름(예: "디버그")입니다.
$(DevEnvDir) Visual Studio의 설치 디렉터리(드라이브 + 경로로 정의됨); 에는 후행 백슬래시(\)가 포함됩니다.
$(FrameworkDir) .NET Framework가 설치된 디렉터리입니다.
$(FrameworkSDKDir) .NET Framework를 설치한 디렉터리입니다. .NET Framework가 Visual Studio의 일부로 설치되었거나 별도로 설치되었을 수 있습니다.
$(FrameworkVersion) Visual Studio에서 사용하는 .NET Framework의 버전입니다. Visual Studio에서 사용하는 .NET Framework 버전에 대한 전체 경로와 결합 $(FrameworkDir)됩니다.
$(FxCopDir) 파일의 경로입니다 fxcop.cmd . 파일이 fxcop.cmd 모든 Visual Studio 버전에 설치되지는 않습니다.
$(IntDir) 중간 파일에 대해 지정된 디렉터리 경로입니다. 상대 경로인 경우 중간 파일은 프로젝트 디렉터리에 추가된 이 경로로 이동합니다. 이 경로에는 후행 백슬래시(\)가 있어야 합니다. 중간 디렉터리 속성의 값으로 확인됩니다 . 이 속성을 정의하는 데는 사용하지 $(OutDir) 마세요.
$(OutDir) 출력 파일 디렉터리에 대한 경로입니다. 상대 경로인 경우 출력 파일은 프로젝트 디렉터리에 추가된 이 경로로 이동합니다. 이 경로에는 후행 백슬래시(\)가 있어야 합니다. 출력 디렉터리 속성의 값으로 확인됩니다 . 이 속성을 정의하는 데는 사용하지 $(IntDir) 마세요.
$(Platform) 현재 프로젝트 플랫폼의 이름(예: "Win32")입니다.
$(PlatformShortName) 현재 아키텍처의 짧은 이름(예: "x86" 또는 "x64")입니다.
$(ProjectDir) 프로젝트의 디렉터리(드라이브 + 경로로 정의됨) 에는 후행 백슬래시(\)가 포함됩니다.
$(ProjectExt) 프로젝트의 파일 확장명입니다. 파일 확장명 앞에 '.'을 포함합니다.
$(ProjectFileName) 프로젝트의 파일 이름(기본 이름 + 파일 확장명으로 정의됨)입니다.
$(ProjectName) 프로젝트의 기본 이름입니다.
$(ProjectPath) 프로젝트의 절대 경로 이름(드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의됨)입니다.
$(PublishDir) 게시 대상의 출력 위치입니다. 에는 후행 백슬래시(\)가 포함됩니다. 기본값은 폴더입니다 $(OutDir)app.publish\ .
$(RemoteMachine) 디버그 속성 페이지에서 Remote Machine 속성의 값으로 설정합니다. 자세한 내용은 C/C++ 디버그 구성에 대한 프로젝트 설정 변경을 참조하세요.
$(RootNameSpace) 애플리케이션을 포함하는 네임스페이스(있는 경우)입니다.
$(SolutionDir) 솔루션의 디렉터리(드라이브 + 경로로 정의됨) 에는 후행 백슬래시(\)가 포함됩니다. IDE에서 솔루션을 빌드할 때만 정의됩니다.
$(SolutionExt) 솔루션의 파일 확장명입니다. 파일 확장명 앞에 '.'을 포함합니다. IDE에서 솔루션을 빌드할 때만 정의됩니다.
$(SolutionFileName) 솔루션의 파일 이름(기본 이름 + 파일 확장명으로 정의됨)입니다. IDE에서 솔루션을 빌드할 때만 정의됩니다.
$(SolutionName) 솔루션의 기본 이름입니다. IDE에서 솔루션을 빌드할 때만 정의됩니다.
$(SolutionPath) 솔루션의 절대 경로 이름(드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의됨)입니다. IDE에서 솔루션을 빌드할 때만 정의됩니다.
$(TargetDir) 빌드에 대한 기본 출력 파일의 디렉터리(드라이브 + 경로로 정의됨) 에는 후행 백슬래시(\)가 포함됩니다.
$(TargetExt) 빌드에 대한 기본 출력 파일의 파일 확장명입니다. 파일 확장명 앞에 '.'을 포함합니다.
$(TargetFileName) 빌드에 대한 기본 출력 파일의 파일 이름(기본이름 + 파일 확장명으로 정의됨)입니다.
$(TargetName) 빌드에 대한 기본 출력 파일의 기본 이름입니다.
$(TargetPath) 빌드에 대한 기본 출력 파일의 절대 경로 이름(드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의됨)입니다.
$(VCInstallDir) Visual Studio 설치의 C++ 컨텐츠가 들어 있는 디렉터리입니다. 이 속성에는 호스트 Visual Studio와 다를 수 있는 MSVC(대상 Microsoft C++) 도구 집합의 버전이 포함되어 있습니다. 예를 들어 빌드할 때 $(PlatformToolset) = v140$(VCInstallDir) Visual Studio 2015 설치 경로가 포함됩니다.
$(VSInstallDir) Visual Studio을 설치한 디렉터리입니다. 이 속성에는 대상 Visual Studio의 도구 집합 버전이 포함되며, 이 버전은 호스트 Visual Studio와 다를 수 있습니다. 예를 들어 빌드할 때 $(PlatformToolset) = v110$(VSInstallDir) Visual Studio 2012 설치 경로가 포함됩니다.
$(WebDeployPath) 웹 배포 루트에서 프로젝트 출력이 속하는 상대 경로입니다.
$(WebDeployRoot) 의 위치에 대한 절대 경로입니다 <localhost>. 예: c:\inetpub\wwwroot.

사용되지 않는 매크로

C++용 빌드 시스템은 Visual Studio 2008과 Visual Studio 2010 간에 크게 변경되었습니다. 이전 프로젝트 형식에서 사용된 많은 매크로가 새 매크로로 변경되었습니다. 이러한 매크로는 더 이상 사용되지 않거나 하나 이상의 동등한 속성 또는 항목 메타데이터 매크로 (%(item-name)) 값으로 대체됩니다. 마이그레이션 도구는 "마이그레이션됨"으로 표시된 매크로를 업데이트할 수 있습니다. 매크로가 포함된 프로젝트가 Visual Studio 2008 또는 이전 버전에서 Visual Studio 2010으로 마이그레이션되는 경우 Visual Studio는 매크로를 해당하는 현재 매크로로 변환합니다. 최신 버전의 Visual Studio는 프로젝트를 Visual Studio 2008 이하 버전에서 새 프로젝트 형식으로 변환할 수 없습니다. 이러한 프로젝트는 먼저 Visual Studio 2010으로 변환한 다음, 결과를 최신 버전의 Visual Studio로 변환하는 2단계 변환을 거쳐야 합니다. 자세한 내용은 잠재적인 업그레이드 문제 개요를 참조하세요.

매크로 설명
$(InputDir) (마이그레이션됨) 입력 파일의 디렉터리(드라이브 + 경로로 정의됨) 에는 후행 백슬래시(\)가 포함됩니다. 프로젝트가 입력인 경우 이 매크로는 .에 해당합니다 $(ProjectDir).
$(InputExt) (마이그레이션됨) 입력 파일의 파일 확장명입니다. 파일 확장명 앞에 '.'을 포함합니다. 프로젝트가 입력인 경우 이 매크로는 .에 해당합니다 $(ProjectExt). 원본 파일의 %(Extension)경우 .
$(InputFileName) (마이그레이션됨) 입력 파일의 파일 이름입니다(기본 이름 + 파일 확장명으로 정의됨). 프로젝트가 입력인 경우 이 매크로는 .에 해당합니다 $(ProjectFileName). 원본 파일의 %(Identity)경우 .
$(InputName) (마이그레이션됨) 입력 파일의 기본 이름입니다. 프로젝트가 입력인 경우 이 매크로는 .에 해당합니다 $(ProjectName). 원본 파일의 %(Filename)경우 .
$(InputPath) (마이그레이션됨) 입력 파일의 절대 경로 이름입니다(드라이브 + 경로 + 기본 이름 + 파일 확장명으로 정의됨). 프로젝트가 입력인 경우 이 매크로는 .에 해당합니다 $(ProjectPath). 원본 파일의 %(FullPath)경우 .
$(ParentName) 이 프로젝트 항목을 포함하는 항목의 이름입니다. 이 매크로는 부모 폴더 이름 또는 프로젝트 이름입니다.
$(SafeInputName) 파일 확장명을 뺀 유효한 클래스 이름으로 파일의 이름입니다. 이 속성에는 정확히 해당하는 속성이 없습니다.
$(SafeParentName) 유효한 이름 형식인 직계 부모의 이름입니다. 예를 들어 양식은 파일의 부모입니다 .resx . 이 속성에는 정확히 해당하는 속성이 없습니다.
$(SafeRootNamespace) 프로젝트 마법사에서 코드를 추가해야 하는 네임스페이스 이름입니다. 이 네임스페이스 이름에는 유효한 C++ 식별자에서 허용되는 문자만 포함됩니다. 이 속성에는 정확히 해당하는 속성이 없습니다.

참고 항목

Visual Studio 프로젝트 - C++
Visual C++ 이식 및 업그레이드 가이드
잠재적인 업그레이드 문제 개요
MSBuild 잘 알려진 항목 메타데이터