CppProperties.json
참조
CMake를 사용하지 않는 폴더 열기 프로젝트는 IntelliSense CppProperties.json
에 대한 프로젝트 구성 설정을 파일에 저장할 수 있습니다. (CMake 프로젝트는 파일을 사용합니다 CMakeSettings.json
.) 구성은 이름/값 쌍으로 구성되며 #include 경로, 컴파일러 스위치 및 기타 매개 변수를 정의합니다. 폴더 열기 프로젝트에서 구성을 추가하는 방법에 대한 자세한 내용은 C++용 폴더 열기 프로젝트를 참조하세요. 다음 섹션에서는 다양한 설정을 간략하게 설명합니다. 스키마에 대한 전체 설명을 보려면 열려 있는 경우 CppProperties.json
코드 편집기의 맨 위에 전체 경로가 지정된 CppProperties_schema.json으로 이동합니다.
구성 속성
구성에는 다음 속성 중 하나가 있을 수 있습니다.
이름 | 설명 |
---|---|
inheritEnvironments |
이 구성에 적용되는 환경을 지정합니다. |
name |
C++ 구성 드롭다운에 표시될 구성 이름 |
includePath |
포함 경로에 지정해야 하는 쉼표로 구분된 폴더 목록입니다(대부분의 컴파일러에 /I 매핑됨). |
defines |
정의해야 하는 매크로 목록(대부분의 컴파일러에 /D 매핑됨) |
compilerSwitches |
IntelliSense 동작에 영향을 줄 수 있는 하나 이상의 추가 스위치 |
forcedInclude |
모든 컴파일 단위에 자동으로 포함되는 헤더( /FI MSVC 또는 -include clang에 매핑됨) |
undefines |
정의되지 않을 매크로 목록(MSVC용으로 /U 매핑됨) |
intelliSenseMode |
사용할 IntelliSense 엔진. MSVC, gcc 또는 Clang에 대해 미리 정의된 아키텍처 특정 변형 중 하나를 지정할 수 있습니다. |
environments |
명령 프롬프트에서 환경 변수처럼 동작하고 매크로를 사용하여 액세스되는 ${env.VARIABLE} 사용자 정의 변수 집합입니다. |
intelliSenseMode 값
입력을 시작하면 코드 편집기에 사용할 수 있는 옵션이 표시됩니다.
이 목록에는 지원되는 값이 표시됩니다.
windows-msvc-x86
windows-msvc-x64
windows-msvc-arm
windows-msvc-arm64
android-clang-x86
android-clang-x64
android-clang-arm
android-clang-arm64
ios-clang-x86
ios-clang-x64
ios-clang-arm
ios-clang-arm64
windows-clang-x86
windows-clang-x64
windows-clang-arm
windows-clang-arm64
linux-gcc-x86
linux-gcc-x64
linux-gcc-arm
참고: 값 msvc-x86
이며 msvc-x64
레거시 이유로만 지원됩니다. 대신에 windows-msvc-*
변형을 사용하세요.
미리 정의된 환경
Visual Studio에서는 해당 개발자 명령 프롬프트에 매핑되는 다음과 같은 미리 정의된 환경을 Microsoft C++에 제공합니다. 이러한 환경 중 하나를 상속하는 경우 다음 매크로 구문${env.VARIABLE}
과 함께 전역 속성을 env
사용하여 환경 변수를 참조할 수 있습니다.
변수 이름 | 설명 |
---|---|
vsdev |
기본 Visual Studio 환경 |
msvc_x86 |
x86 도구를 사용하여 x86용으로 컴파일 |
msvc_x64 |
64비트 도구를 사용하여 AMD64용으로 컴파일 |
msvc_arm |
x86 도구를 사용하여 ARM용으로 컴파일 |
msvc_arm64 |
x86 도구를 사용하여 ARM64용으로 컴파일 |
msvc_x86_x64 |
x86 도구를 사용하여 AMD64용으로 컴파일 |
msvc_arm_x64 |
64비트 도구를 사용하여 ARM용으로 컴파일 |
msvc_arm64_x64 |
64비트 도구를 사용하여 ARM64용으로 컴파일 |
Linux 워크로드가 설치되면 원격으로 Linux 및 WSL을 대상으로 지정하는 데 사용할 수 있는 환경은 다음과 같습니다.
변수 이름 | 설명 |
---|---|
linux_x86 |
원격으로 x86 Linux를 대상 지정 |
linux_x64 |
원격으로 x64 Linux를 대상 지정 |
linux_arm |
원격으로 ARM Linux를 대상 지정 |
사용자 정의 환경
필요에 따라 속성을 사용하여 environments
전역적으로 또는 구성별로 변수 CppProperties.json
집합을 정의할 수 있습니다. 이러한 변수는 Open Folder 프로젝트의 컨텍스트에서 환경 변수처럼 동작합니다. 여기에서 정의한 ${env.VARIABLE}
후 구문을 tasks.vs.json
launch.vs.json
사용하여 액세스할 수 있습니다. 그러나 Visual Studio에서 내부적으로 사용하는 명령 프롬프트에서 반드시 실제 환경 변수로 설정되는 것은 아닙니다.
Visual Studio 2019 버전 16.4 이상: 정의된 CppProperties.json
구성 관련 변수는 설정할 inheritEnvironments
필요 없이 디버그 대상 및 태스크에 의해 자동으로 선택됩니다. 디버그 대상은 지정 CppProperties.json
한 환경으로 자동으로 시작됩니다.
Visual Studio 2019 버전 16.3 이하: 환경을 사용하는 경우 환경이 동일한 구성 environment
의 일부로 정의된 경우에도 속성에 inheritsEnvironments
지정해야 합니다. 속성은 환경의 이름을 지정합니다. 다음 예에서는 MSYS2 설치에서 GCC에 대해 IntelliSense를 사용하도록 설정하는 샘플 구성을 보여줍니다. 이 구성에서 mingw_64
환경을 정의하고 상속하는 방법과 includePath
속성이 INCLUDE
변수에 액세스할 수 있는 방법을 참고하세요.
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath ,": [
"${env.INCLUDE}",
"${workspaceRoot}\\**",
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};",
"environment": "mingw_64"
}
]
}
]
구성 내에서 속성을 정의 "environments"
하면 이름이 같은 전역 변수를 재정의합니다.
기본 제공 매크로
CppProperties.json
내에서 액세스할 수 있는 기본 제공 매크로는 다음과 같습니다.
매크로 | 설명 |
---|---|
${workspaceRoot} |
작업 영역 폴더의 전체 경로 |
${projectRoot} |
배치되는 CppProperties.json 폴더의 전체 경로 |
${env.vsInstallDir} |
실행 중인 Visual Studio 인스턴스가 설치되는 폴더의 전체 경로 |
예시
프로젝트에 포함 폴더가 있고 Windows SDK의 * 및 기타 일반 헤더도 포함된 *windows.h
경우 다음을 포함하여 구성 파일을 업데이트 CppProperties.json
할 수 있습니다.
{
"configurations": [
{
"name": "Windows",
"includePath": [
// local include folder
"${workspaceRoot}\\include",
// Windows SDK and CRT headers
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\ucrt",
"${env.NETFXSDKDir}\\include\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\shared",
"${env.VCToolsInstallDir}\\include"
]
}
]
}
참고 항목
%WindowsSdkDir%
전역 %VCToolsInstallDir%
환경 변수로 설정되지 않습니다. 이러한 변수를 정의하는 개발자 명령 프롬프트에서 시작해야 devenv.exe
합니다. (Windows 시작 메뉴에 "developer"를 입력하여 개발자 명령 프롬프트 바로 가기를 찾습니다.)
IntelliSense 오류 문제 해결
예상되는 IntelliSense가 표시되지 않는 경우 도구>옵션>텍스트 편집기>C/C++>Advanced로 이동하여 로깅을 사용하도록 설정하여 true
문제를 해결할 수 있습니다. 먼저 로깅 수준을 5로 설정하고 로깅 필터를 8로 설정해 봅니다.
출력은 출력 창으로 파이프되며 출력 표시: Visual C++ 로그를 선택하면 표시됩니다. 출력에는 무엇보다 IntelliSense에서 사용하려는 실제 include 경로의 목록이 포함됩니다. 경로가 해당 경로와 일치하지 CppProperties.json
않는 경우 폴더를 닫고 캐시된 검색 데이터가 포함된 하위 폴더를 삭제 .vs
해 보세요.
포함 경로 누락으로 인한 IntelliSense 오류를 해결하려면 오류 목록 탭을 연 다음 출력을 "IntelliSense만" 및 오류 코드 E1696 "파일 오픈 소스 수 없습니다..."로 필터링합니다.