IntelliSense에 대한 C++ 프로젝트 구성Configure a C++ project for IntelliSense

IntelliSense가 제대로 작동하도록 C++ 프로젝트를 수동으로 구성해야 하는 경우도 있습니다.In some cases, you might need to manually configure your C++ project to get IntelliSense working properly. MSBuild 프로젝트(.vcxproj 파일 기반)의 경우 프로젝트 속성에서 설정을 조정할 수 있습니다.For MSBuild projects (based on .vcxproj files), you can adjust settings in project properties. 비 MSBuild 프로젝트의 경우 프로젝트의 루트 디렉터리에 있는 CppProperties.json 파일에서 설정을 조정합니다.For non-MSBuild projects, you adjust settings in the CppProperties.json file in the root directory of the project. IntelliSense가 매크로 정의를 이해할 수 있도록 힌트 파일을 만들어야 하는 경우도 있습니다.In some cases, you may need to create a hint file to help IntelliSense understand macro definitions. Visual Studio IDE는 IntelliSense 문제를 식별하고 수정하는 데 도움이 됩니다.The Visual Studio IDE helps you identify and fix IntelliSense problems.

단일 파일 IntelliSenseSingle-file IntelliSense

프로젝트에 포함되지 않은 파일을 여는 경우 Visual Studio에서 일부 IntelliSense 지원을 제공하지만, 기본적으로 오류 물결선은 표시되지 않습니다.When you open a file that is not included in a project, Visual Studio provides some IntelliSense support but by default no error squiggles are shown. 탐색 모음에 ‘기타 파일’이 표시되면 잘못된 코드 아래에 오류 물결선이 표시되지 않는 이유 또는 전처리기 매크로가 정의되지 않은 이유를 설명하는 것일 수 있습니다. If the Navigation Bar says Miscellaneous Files, then that probably explains why you are not seeing error squiggles under incorrect code, or why a preprocessor macro is not defined.

오류 목록 확인Check the Error List

파일이 단일 파일 모드로 열리지 않았으며 IntelliSense가 제대로 작동하지 않는 경우 먼저 오류 목록 창을 확인해야 합니다.If a file is not open in single-file mode, and IntelliSense is not working correctly, the first place to check is the Error List window. 현재 소스 파일 및 포함된 모든 헤더 파일에 대한 IntelliSense 오류를 모두 보려면 드롭다운에서 빌드 + IntelliSense를 선택합니다.To see all the IntelliSense errors for the current source file together with all included header files, choose Build + IntelliSense in the dropdown:

오류 목록의 VC++ IntelliSense

IntelliSense에서는 최대 1000개의 오류를 생성합니다.IntelliSense produces a maximum of 1000 errors. 소스 파일에 포함된 헤더 파일에 1000개가 넘는 오류가 있는 경우 소스 파일의 시작 부분에만 오류 물결선 하나가 표시됩니다.If there are over 1000 errors in the header files included by a source file, then the source file shows only a single error squiggle at the very start of the source file.

#include 경로가 올바른지 확인합니다.Ensure #include paths are correct

MSBuild 프로젝트MSBuild projects

Visual Studio IDE 외부에서 빌드를 실행하고, 빌드에 성공하지만 IntelliSense가 잘못된 경우 명령줄이 하나 이상의 구성에 대한 프로젝트 설정과 동기화되지 않을 수 있습니다.If you run your builds outside of the Visual Studio IDE, and your builds are succeeding but IntelliSense is incorrect, it is possible that your command line is out of sync with the project settings for one or more configurations. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 현재 구성 및 플랫폼에 대한 모든 #include 경로가 올바른지 확인합니다.Right-click on the project node in Solution Explorer and make sure that all #include paths are correct for the current configuration and platform. 모든 구성 및 플랫폼에서 경로가 동일한 경우 모든 구성모든 플랫폼을 선택한 다음, 경로가 올바른지 확인할 수 있습니다.If the paths are identical in all configurations and platforms, you can select All configurations and All platforms and then verify that the paths are correct.

VC++ 포함 디렉터리

VC_IncludePath와 같은 빌드 매크로의 현재 값을 보려면 포함 디렉터리 줄을 선택하고 오른쪽에 있는 드롭다운을 클릭합니다.To see the current values for build macros such as VC_IncludePath, select the Include Directories line and click the dropdown on the right. <편집> 을 선택하고 매크로 단추를 클릭합니다.Then choose <Edit> and click on the Macros button.

메이크파일 프로젝트Makefile projects

NMake 프로젝트 템플릿을 기반으로 하는 메이크파일 프로젝트의 경우 왼쪽 창에서 NMake를 선택한 다음, IntelliSense 범주 아래의 포함 검색 경로를 선택합니다.For Makefile projects that are based on the NMake project template, choose NMake in the left pane and then choose Include search path under the IntelliSense category:

메이크파일 프로젝트 포함 경로

폴더 열기 프로젝트Open Folder projects

CMake 프로젝트의 경우, CMakeLists.txt에서 모든 구성에 대한 #include 경로가 올바르게 지정되었는지 확인합니다.For CMake projects, make sure that #include paths are specified correctly for all configurations in CMakeLists.txt. 기타 프로젝트 형식에는 CppProperties.json 파일이 필요할 수 있습니다.Other project types might require a CppProperties.json file. 자세한 내용은 CppProperties.json으로 IntelliSense 구성을 참조하세요.For more information, see Configure IntelliSense with CppProperties.json. 파일에 정의된 각 구성에 대한 경로가 올바른지 확인합니다.Make sure that the paths are correct for each configuration that is defined in the file.

CppProperties.json 파일에 구문 오류가 있는 경우 영향을 받는 파일의 IntelliSense가 잘못됩니다.If there is a syntax error in the CppProperties.json file, IntelliSense in the affected files will be incorrect. Visual Studio에서 출력 창에 오류를 표시합니다.Visual Studio will display the error in the Output Window.

태그 구문 분석기 문제Tag parser issues

태그 구문 분석기는 검색 및 탐색에 사용되는 “퍼지” C++ 구문 분석기입니다.The tag parser is a "fuzzy" C++ parser that is used for browsing and navigation. 매우 빠르지만 모든 코드 구문을 완전히 이해하려고 하지는 않습니다.It is very fast but does not attempt to completely comprehend every code construct.

예를 들어 전처리기 매크로를 평가하지 않으므로 전처리기 매크로를 많이 사용하는 코드를 잘못 구문 분석할 수 있습니다.For example, it doesn’t evaluate preprocessor macros, and therefore it may incorrectly parse code that makes heavy use of them. 태그 구문 분석기는 익숙하지 않은 코드 구문을 발견할 경우 해당 코드 영역 전체를 건너뛸 수 있습니다.When the Tag Parser encounters an unfamiliar code construct, it may skip that entire region of code.

Visual Studio에서 이 문제는 다음 두 가지 방식으로 나타납니다.There are two common ways in which this problem manifests in Visual Studio:

  1. 탐색 모음에서 가장 안쪽 매크로를 표시하는 경우 현재 함수 정의를 건너뛴 것입니다.If the Navigation Bar shows an innermost macro, then the current function definition was skipped:

    태그 구문 분석기가 함수 정의를 건너뜀

  2. IDE에서 이미 정의된 함수에 대한 함수 정의를 만들도록 제안합니다.The IDE offers to create a function definition for a function that is already defined:

    태그 구문 분석기가 기존 함수를 정의하도록 제안함

이러한 종류의 문제를 해결하려면 cpp.hint라는 파일을 솔루션 디렉터리의 루트에 추가합니다.To fix these kinds of problems, add a file named cpp.hint to the root of your solution directory. 자세한 내용은 힌트 파일을 참조하세요.For more information, see Hint Files.

태그 구문 분석기 오류가 오류 목록 창에 표시됩니다.Tag parser errors appear in the Error List window.

진단 로깅을 사용하여 프로젝트 설정의 유효성 검사Validate project settings with diagnostic logging

IntelliSense 컴파일러가 포함 경로 및 전처리기 매크로를 포함하여 올바른 컴파일러 옵션을 사용하는지 확인하려면 도구 > 옵션 > 텍스트 편집기 > C/C++ > 고급 > 진단 로깅에서 IntelliSense 명령줄의 진단 로깅을 켭니다.To check whether IntelliSense compiler is using correct compiler options, including Include Paths and Preprocessor macros, turn on Diagnostic Logging of IntelliSense command lines in Tools > Options > Text Editor > C/C++ > Advanced > Diagnostic Logging. 로깅 사용을 True로 설정하고 로깅 수준을 5(가장 자세한 정보 로깅), 로깅 필터를 8(IntelliSense 로깅)로 설정합니다.Set Enable Logging to True, Logging Level to 5 (most verbose), and Logging Filter to 8 (IntelliSense logging).

출력 창에는 이제 IntelliSense 컴파일러에 전달되는 명령줄이 표시됩니다.The Output Window will now show the command lines that are passed to the IntelliSense compiler. 다음은 샘플 출력입니다.Here is a sample output:

[IntelliSense] Configuration Name: Debug|Win32
[IntelliSense] Toolset IntelliSense Identifier:
[IntelliSense] command line options:
/c
/I.
/IC:\Repo\Includes
/DWIN32
/DDEBUG
/D_DEBUG
/Zc:wchar_t-
/Zc:forScope
/Yustdafx.h

이 정보는 IntelliSense에서 부정확한 정보를 제공하는 이유를 이해하는 데 도움이 될 수 있습니다.This information may help you understand why IntelliSense is providing inaccurate information. 예를 들어 프로젝트의 포함 디렉터리에 $(MyVariable)\Include가 들어 있고 진단 로그에 /I\Include가 포함 경로로 표시되는 경우 $(MyVariable) 이 평가되지 않았으며 최종 포함 경로에서 제거되었음을 의미합니다.For example, if your project’s Include directory contains $(MyVariable)\Include, and the diagnostic log shows /I\Include as an Include path, it means that $(MyVariable) wasn’t evaluated, and was removed from the final include path.

IntelliSense 빌드 정보About the IntelliSense build

Visual Studio에서는 전용 C++ 컴파일러를 사용하여 모든 IntelliSense 기능을 지원하는 데이터베이스를 만들고 유지 관리합니다.Visual Studio uses a dedicated C++ compiler to create and maintain the database that powers all the IntelliSense features. IntelliSense 데이터베이스를 코드와 동기화된 상태로 유지하기 위해 Visual Studio는 프로젝트 설정 또는 소스 파일의 특정 변경 내용에 대한 응답으로 IntelliSense 전용 빌드를 백그라운드 작업으로 자동 시작합니다.To keep the IntelliSense database in sync with the code, Visual Studio automatically launches IntelliSense-only builds as background tasks in response to certain changes made in the project settings or source files.

그러나 Visual Studio에서 적절한 시기에 IntelliSense 데이터베이스를 업데이트하지 못하는 경우도 있습니다.However, in some cases Visual Studio might not update the IntelliSense database in a timely manner. 예를 들어 git pull 또는 git checkout 명령을 실행하는 경우 Visual Studio에서 파일의 변경 내용을 검색하는 데 최대 1시간이 걸릴 수 있습니다.For example, when you run a git pull or git checkout command, Visual Studio might take up to an hour to detect changes in the files. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 솔루션 다시 검색을 선택하여 솔루션의 모든 파일을 강제로 다시 검색할 수 있습니다.You can force a rescan of all files in a solution by right-clicking on the project node in Solution Explorer and choosing Rescan Solution.

IntelliSense 빌드 문제 해결Troubleshooting IntelliSense build failures

IntelliSense 빌드에서는 이진 파일을 생성하지 않지만 여전히 실패할 수 있습니다.An IntelliSense build does not produce binaries, but it can still fail. 한 가지 가능한 실패 원인은 사용자 지정 .props 또는 .targets 파일입니다.One possible cause for failure is custom .props or .targets files. Visual Studio 2017 버전 15.6 이상에서는 IntelliSense 전용 빌드 오류가 출력 창에 기록됩니다.In Visual Studio 2017 version 15.6 and later, IntelliSense-only build errors are logged to the Output window. 오류를 보려면 출력 보기 선택솔루션으로 설정합니다.To see them, set Show output from to Solution:

솔루션 오류 출력 창

오류 메시지에서 디자인 타임 추적을 사용하도록 지시할 수 있습니다.The error message might instruct you to enable design-time tracing:

error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj',
configuration 'Debug|x64'. IntelliSense might be unavailable.
Set environment variable TRACEDESIGNTIME=true and restart
Visual Studio to investigate.

환경 변수 TRACEDESIGNTIME을 true로 설정하고 Visual Studio를 다시 시작하면 빌드 실패 진단에 도움이 되는 로그 파일이 %TEMP% 디렉터리에 표시됩니다.If you set the environment variable TRACEDESIGNTIME to true and restart Visual Studio, you will see a log file in the %TEMP% directory, which might help diagnose the build failure.

TRACEDESIGNTIME 환경 변수에 대한 자세한 내용은 Roslyn공통 프로젝트 시스템을 참조하세요.To learn more about TRACEDESIGNTIME environment variable, see Roslyn and Common Project System. 이러한 문서의 정보는 C++ 프로젝트와 관련이 있습니다.The information in these articles is relevant for C++ projects.

참고 항목See Also