CMakePresets.jsonCMakeUserPresets.json Microsoft 공급업체 맵

CMake는 사용자가 일반적인 구성, 빌드, 테스트 옵션을 지정하고 다른 사용자와 공유할 수 있도록 하는 CMakePresets.jsonCMakeUserPresets.json의 두 파일을 지원합니다.

CMakePresets.jsonCMakeUserPresets.json을 사용하여 Visual Studio, Visual Studio Code, CI(연속 통합) 파이프라인, 명령줄에서 CMake를 구동할 수 있습니다.

CMakePresets.json은 프로젝트 차원의 빌드를 저장하는 데 사용되고 CMakeUserPresets.json은 개발자가 고유한 로컬 빌드를 저장하는 데 사용됩니다. 두 파일에 대한 스키마는 동일합니다.

CMakePresets.jsonCMakeUserPresets.json은 공급업체 관련 정보를 저장하는 공급업체 맵을 지원합니다. Microsoft는 Visual Studio 및 Visual Studio Code와 관련된 옵션과 함께 두 가지 공급업체 맵을 유지 관리합니다. 여기서는 두 가지 Microsoft 공급업체 맵과 공급업체 매크로를 문서화합니다. 나머지 스키마에 대한 자세한 내용은 공식 CMake 설명서를 참조하세요. 여기에는 구성 사전 설정, 빌드 사전 설정, 테스트 사전 설정에 대한 정보가 포함되어 있습니다.

Visual Studio에서 CMakePresets.json을 사용하는 방법에 대한 자세한 내용은 Visual Studio에서 CMake 사전 설정으로 구성 및 빌드를 참조하세요.

Visual Studio Code에서 CMakePresets.json을 사용하는 방법에 대한 자세한 내용은 Configure and build with CMake Presets in VS Code(VS Code에서 CMake 사전 설정으로 구성 및 빌드)를 참조하세요.

Visual Studio 설정 공급업체 맵

공급업체 URI microsoft.com/VisualStudioSettings/CMake/<version>을 사용하는 공급업체 맵은 구성 사전 설정당 하나가 허용되며 Visual Studio 및 Visual Studio Code의 CMake 통합과 관련된 옵션을 포함합니다. 공급업체 맵의 모든 옵션은 Visual Studio에 적용됩니다. Visual Studio와 Visual Studio Code 모두에 적용되는 옵션은 명시적으로 표시되어 있습니다.

Visual Studio 설정 공급업체 맵의 모든 설정은 선택 사항이며 inherits 키로 지정된 구성 사전 설정에서 상속됩니다. 수정된 옵션만 파일에 기록됩니다. Visual Studio 설정 공급업체 맵은 CMakePresets.jsonCMakeUserPresets.json 둘 다에서 지원됩니다.

Visual Studio 설정 공급업체 맵의 옵션은 CMake 또는 CTest 명령줄의 생성에 영향을 주지 않습니다. 따라서 동일한 CMakePresets.json 파일을 사용하여 Visual Studio, Visual Studio Code, 명령줄에서 CMake를 구동할 수 있습니다. 예외에는 cacheRootcmakeGenerateCommand 옵션이 있습니다. 이러한 옵션은 Visual Studio의 기존 캐시 열기 시나리오와 관련이 있으며 명령줄에서 재현할 수 없습니다.

설정 설명
hostOS 지원되는 OS(운영 체제)의 배열입니다. 허용되는 값은 Windows, Linux, macOS입니다.

hostOS 값은 Visual Studio 및 Visual Studio Code에서 대상 시스템의 OS에 적용되지 않는 구성 사전 설정을 숨기고 향상된 사용자 환경을 제공하는 데 사용됩니다.

hostOS를 지정하지 않으면 Visual Studio 및 Visual Studio Code에서 항상 선택 항목에 대한 모든 구성 사전 설정을 표시합니다. 이 필드는 문자열일 수도 있으며 이 문자열은 하나의 문자열을 포함하는 배열과 동일합니다.

이 옵션은 Visual Studio 및 Visual Studio Code 모두에서 지원됩니다.
intelliSenseMode Visual Studio에서 <target>-<toolset>-<arch> 형식을 사용하여 IntelliSense 정보를 컴퓨팅하는 데 사용되는 모드를 지정합니다.

허용되는 값:

android-clang-arm
android-clang-arm64
android-clang-x6
android-clang-x86
ios-clang-ar
ios-clang-arm64
ios-clang-x6
ios-clang-x86
linux-gcc-arm
linux-gcc-x64
linux-gcc-x86
windows-clang-arm
windows-clang-arm64
windows-clang-x64
windows-clang-x86
windows-msvc-arm
windows-msvc-arm64
windows-msvc-x64
windows-msvc-x86

intelliSenseMode를 지정하지 않으면 Visual Studio는 지정한 컴파일러 및 대상 아키텍처와 일치하는 IntelliSense 모드를 사용합니다. intelliSenseMode는 교차 컴파일을 위해 향상된 IntelliSense를 제공하는 데 자주 사용됩니다.

Visual Studio 2019에서는 clang 또는 clang-cl을 사용하여 빌드할 때 clang IntelliSense 모드를 명시적으로 지정해야 합니다.
intelliSenseOptions 추가 IntelliSense 구성 옵션의 맵입니다.

useCompilerDefaults: 컴파일러 기본값을 사용할지 여부를 지정하는 A bool 는 IntelliSense에 대한 경로를 정의하고 포함합니다. 사용 중인 컴파일러가 gcc-style 인수를 지원하지 않는 경우에만 false여야 합니다. 기본값은 true입니다.

additionalCompilerArgs: Visual Studio에서 IntelliSense를 제어하는 추가 옵션의 배열입니다. 이 옵션은 매크로 확장을 지원합니다.
enableMicrosoftCodeAnalysis cl 또는 clang-cl을 사용하여 빌드할 때 Visual Studio에서 Microsoft 코드 분석을 사용하도록 설정하는 bool입니다. 기본값은 false입니다.
codeAnalysisRuleset Visual Studio에서 Microsoft 코드 분석을 실행할 때 사용할 규칙 집합을 지정합니다. 규칙 집합 파일의 경로 또는 Visual Studio와 함께 설치된 규칙 집합 파일의 이름을 사용할 수 있습니다. 이 옵션은 매크로 확장을 지원합니다.
disableExternalAnalysis Visual Studio의 외부 헤더에서 코드 분석을 실행할지를 지정하는 bool입니다.
codeAnalysisExternalRuleset Visual Studio의 외부 헤더에서 Microsoft 코드 분석을 실행할 때 사용할 규칙 집합을 지정합니다. 규칙 집합 파일의 경로 또는 Visual Studio와 함께 설치된 규칙 집합 파일의 이름을 사용할 수 있습니다. 이 옵션은 매크로 확장을 지원합니다.
enableClangTidyCodeAnalysis clang-cl을 사용하여 빌드할 때 Visual Studio에서 clang-tidy 코드 분석을 사용하도록 설정하는 bool입니다. 기본값은 false입니다.
clangTidyChecks Visual Studio에서 clang-tidy 코드 분석을 실행할 때 clang-tidy에 전달되는 쉼표로 구분된 경고 목록입니다. 와일드카드가 허용되며 - 접두사는 검사를 제거합니다.
cacheRoot CMake 캐시의 경로를 지정합니다. 이 디렉터리에는 기존 CMakeCache.txt 파일이 포함되어야 합니다. 이 키는 Visual Studio의 기존 캐시 열기 시나리오에서만 지원됩니다. 이 옵션은 매크로 확장을 지원합니다.
cmakeGenerateCommand CMake 캐시를 생성하는 명령줄 도구이며 명령줄 프로그램 및 인수(예: gencache.bat debug)로 지정됩니다. 이 명령은 CMake 구성이 호출될 때 사전 설정의 지정된 환경을 사용하여 셸에서 실행됩니다. 이 키는 Visual Studio의 기존 캐시 열기 시나리오에서만 지원됩니다. 이 옵션은 매크로 확장을 지원합니다.

Visual Studio 원격 설정 공급업체 맵

공급업체 URI microsoft.com/VisualStudioRemoteSettings/CMake/<version>을 사용하는 공급업체 맵은 구성 사전 설정당 하나가 허용되며 Visual Studio의 원격 개발과 관련된 옵션을 포함합니다. 원격 개발은 원격 SSH 연결 또는 WSL에서 CMake를 호출한다는 의미입니다. Visual Studio 원격 설정 공급업체 맵의 옵션은 Visual Studio Code에 적용되지 않습니다.

Visual Studio 원격 설정 공급업체 맵의 모든 설정은 선택 사항이며 inherits 키로 지정된 구성 사전 설정에서 상속됩니다. 수정된 옵션만 파일에 기록됩니다. Visual Studio 원격 설정 공급업체 맵은 CMakePresets.jsonCMakeUserPresets.json 둘 다에서 지원됩니다.

Visual Studio 설정 공급업체 맵의 옵션은 CMake 또는 CTest 명령줄의 생성에 영향을 주지 않습니다. 따라서 동일한 CMakePresets.json 파일을 사용하여 Visual Studio, Visual Studio Code, 명령줄에서 CMake를 구동할 수 있습니다.

WSL1을 대상으로 하는 경우 Visual Studio 원격 설정 공급업체 맵의 많은 옵션이 무시됩니다. WSL1 도구 집합은 모든 명령을 로컬에서 실행하고 /mnt 폴더에 탑재된 Windows 드라이브를 사용하여 WSL1에서 로컬 소스 파일에 액세스하기 때문입니다. 소스 파일 복사본이 필요하지 않습니다. WSL1을 대상으로 하는 경우 무시되는 옵션은 명시적으로 표시되어 있습니다.

설정 설명
sourceDir 프로젝트가 복사될 원격 시스템의 디렉터리 경로입니다. 기본값은 $env{HOME}/.vs/$ms{projectDirName}입니다. 이 옵션은 매크로 확장을 지원합니다.

원격 복사 시나리오에서 ${sourceDir} 매크로는 Windows 머신의 프로젝트 소스 디렉터리가 아닌 원격 시스템의 프로젝트 소스 디렉터리로 평가됩니다. 원격 복사 시나리오에는 원격 SSH 연결 대상 지정이 포함됩니다. 이러한 경우 원격 시스템의 프로젝트 소스 디렉터리는 Visual Studio 원격 설정 공급업체 맵의 sourceDir 값에 따라 결정됩니다. 이 옵션은 WSL1을 대상으로 하는 경우 무시됩니다.
copySources true인 경우 Visual Studio는 Windows에서 원격 시스템으로 소스를 복사합니다. 파일 동기화를 직접 관리하는 경우 false로 설정합니다. 기본값은 true입니다. 이 옵션은 WSL1을 대상으로 하는 경우 무시됩니다.
copySourcesOptions Windows에서 원격 시스템으로 소스 복사와 관련된 옵션의 개체입니다. 이 개체는 WSL1을 대상으로 하는 경우 무시됩니다.

copySourcesOptions.exclusionList: 소스 파일을 원격 시스템에 복사할 때 제외할 경로 목록입니다. 경로는 파일 또는 디렉터리의 이름이거나 복사본의 루트에 대한 상대 경로일 수 있습니다. 기본값은 [ ".vs", ".git", "out" ]입니다. 이 옵션은 매크로 확장을 지원합니다.

copySourcesOptions.method: 소스 파일을 원격 시스템에 복사하는 데 사용되는 메서드입니다. 허용되는 값은 rsyncsftp입니다. 기본값은 rsync입니다.

copySourcesOptions.concurrentCopies: 소스를 원격 시스템으로 동기화하는 동안 사용되는 동시 복사본 수입니다. 기본값은 5입니다.

copySourcesOptions.outputVerbosity: 원격 시스템에 대한 소스 복사 작업의 세부 정보 표시 수준입니다. 허용되는 수준은 Normal, Verbose, Diagnostic입니다. 기본값은 Normal입니다.
rsyncCommandArgs rsync에 전달되는 명령줄 인수입니다. 기본값은 [ "-t", "--delete", "--delete-excluded" ]입니다. 이 옵션은 매크로 확장을 지원하며 WSL1을 대상으로 하는 경우 무시됩니다.
copyBuildOutput 원격 시스템에서 Windows로 다시 빌드 출력을 복사할지를 지정합니다. 기본값은 false입니다. 이 옵션은 WSL1을 대상으로 하는 경우 무시됩니다.
copyOptimizations 소스 복사 최적화와 관련된 옵션의 개체입니다. 이러한 옵션은 WSL1을 대상으로 하는 경우 무시됩니다.

copyOptimizations.maxSmallChange: rsync 대신 sftp를 사용하여 복사할 최대 파일 수입니다. 기본값은 10입니다.

copyOptimizations.useOptimizations: 사용 중인 복사 최적화를 지정합니다. 허용되는 값은 복사 최적화 없음(None), rsync만 최적화(RsyncOnly), rsync 및 sftp 최적화(RsyncAndSftp)입니다. 기본값은 RsyncAndSftp입니다.

copyOptimizations.rsyncSingleDirectoryCommandArgs: 단일 디렉터리의 콘텐츠를 원격 시스템에 복사할 때 rsync에 전달되는 명령줄 인수 목록입니다. 기본값은 [ "-t", "-d" ]입니다. 이 옵션은 매크로 확장을 지원합니다.
copyAdditionalIncludeDirectoriesList IntelliSense에 대해 로컬로 복사할 원격 헤더 디렉터리 경로 목록입니다. 이 옵션은 매크로 확장을 지원합니다.
copyExcludeDirectoriesList IntelliSense에 대해 로컬로 복사하지 않을 원격 헤더 디렉터리 경로 목록입니다. 이 옵션은 매크로 확장을 지원합니다.
forceWSL1Toolset true인 경우 Visual Studio에서 WSL을 대상으로 할 때 Visual Studio는 항상 WSL1 도구 집합을 사용합니다. WSL1 도구 집합은 모든 명령을 로컬에서 실행하고 /mnt 폴더에 탑재된 Windows 드라이브를 사용하여 WSL에서 로컬 소스 파일에 액세스합니다. WSL2에서는 이러한 옵션의 속도가 느려질 수 있습니다. 기본값은 false입니다.

WSL1 도구 집합은 항상 Visual Studio 2019 버전 16.10에서 사용됩니다. WSL2에 대한 기본 지원을 사용할 수 있는 경우 이 옵션이 관련됩니다.

원격 빌드 전 및 빌드 후 이벤트

remotePrebuildEventremotePostbuildEvent에 대한 옵션은 CMakePresets.json 채택으로 사용이 중단되었습니다.

add_custom_command를 사용하여 CMakeLists.txt에서 빌드 전, 링크 전, 빌드 후 이벤트를 인코딩합니다. 그러면 Visual Studio 및 명령줄에서 빌드할 때 동일한 동작이 보장됩니다.

Visual Studio와 관련된 동작이 필요한 경우 tasks.vs.json에서 사용자 지정 원격 작업을 추가할 수 있습니다. 시작하려면 솔루션 탐색기폴더 보기에서 루트 CMakeLists.txt를 마우스 오른쪽 단추로 클릭하고 작업 구성을 선택합니다. 그런 다음, tasks.vs.json 파일에 새 원격 작업을 추가할 수 있습니다.

다음 원격 작업은 원격 Linux 시스템에 test라는 디렉터리를 만듭니다.

{
      "taskLabel": "mkdir",
      "appliesTo": "CMakeLists.txt",
      "type": "remote",
      "command": "mkdir test",
      "remoteMachineName": "localhost"
  }

CMakeLists.txt를 마우스 오른쪽 단추로 클릭하고 mkdir 옵션을 선택하여 이 작업을 실행합니다.

remoteMachineName 값은 연결 관리자에 있는 연결의 호스트 이름과 일치해야 합니다.

Microsoft 공급업체 매크로

Visual Studio SettingsVisual Studio Remote Settings의 두 Microsoft 공급업체 맵은 CMake에서 정의한 모든 매크로를 지원합니다. Microsoft 공급업체 맵은 CMake에서 정의한 모든 매크로를 지원합니다. 자세한 내용은 cmake-presets Macro Expansion(cmake-presets 매크로 확장)을 참조하세요. 모든 매크로 및 환경 변수는 CMake에 전달되기 전에 확장됩니다.

Visual Studio는 ms 접두사를 사용하여 공급업체 매크로를 지원합니다. Microsoft 공급업체 매크로는 Microsoft 공급업체 맵에서만 사용할 수 있습니다. CMake는 공급업체 맵 외부에 공급업체 매크로가 있는 사전 설정을 사용할 수 없습니다.

매크로 설명
$ms{projectDirName} Visual Studio에 열려 있는 폴더의 이름으로 평가됩니다. 이 매크로는 원격 복사 시나리오에서 sourceDir의 기본값을 설정하는 데 사용됩니다. 이 매크로는 Visual Studio Code에서 지원되지 않습니다. 대신 ${sourceDirName}을 사용합니다.

환경 변수

매크로 설명
$env{<variable-name>}
$penv{<variable-name>}
CMake에서 지원하는 이 구문을 사용하여 환경 변수를 참조합니다. 자세한 내용은 cmake-presets Macro Expansion(cmake-presets 매크로 확장)을 참조하세요.

사용되지 않는 매크로

CMakeSettings.json에서 지원된 일부 매크로가 CMakePresets.json의 채택으로 사용이 중단되었습니다.

CMake에서 지원하는 매크로를 사용하여 파일 경로를 생성합니다. 매크로를 사용하면 동일한 CMakePresets.json 파일이 Visual Studio 내부와 명령줄에서 작동합니다.

사용되지 않는 매크로 권장
${projectFile} ${sourceDir}/CMakeLists.txt
${thisFile} ${sourceDir}/CMakePresets.json

허용된 셸 구문

Microsoft 공급업체 맵에서 Linux 경로를 생성할 때 $env{HOME} 구문을 사용하여 $HOME을 참조합니다.