이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

크로스 컴파일을 위한 IntelliSense

이 문서는 Visual Studio Code에서 개발 호스트 머신과 다른 아키텍처로 컴파일할 때 적절한 IntelliSense(예: 코드 완성)를 제공하도록 C/C++ 확장을 구성하는 방법에 대해 설명합니다. 예를 들어, 호스트 머신이 x64이지만 Arm으로 컴파일하는 경우입니다.

C/C++ 확장은 컴파일러가 아니라 구문 강조 및 IntelliSense와 같은 풍부한 언어 기능을 제공합니다. 확장이 올바른 IntelliSense 제안을 제공하고 데이터 형식의 올바른 크기를 반영하려면 대상 아키텍처를 에뮬레이션하도록 C++ 확장을 구성해야 합니다.

이러한 구성 설정은 프로젝트의 c_cpp_properties.json 파일에 저장됩니다. 이 파일을 편집하려면 VS Code에서 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 C/C++: 구성 편집(UI)을 선택합니다.

Command Palette

IntelliSense 구성 예제

다음은 Linux x64 호스트 머신에서 Linux Arm을 대상으로 C/C++ 확장을 구성하는 방법을 보여줍니다. 다음 IntelliSense 설정을 구성합니다.

  • 컴파일러 경로: 확장은 시스템 라이브러리 및 컴파일러 정의를 검색하기 위해 이 위치에서 컴파일러를 쿼리합니다.
  • IntelliSense 모드: 대상 아키텍처 및 컴파일러를 에뮬레이션하여 확장이 올바른 IntelliSense를 제공하고 pointer, size_t, long 등과 같은 데이터 형식의 올바른 크기를 반영할 수 있도록 합니다.

최소한 컴파일러 경로IntelliSense 모드를 설정하면 확장이 프로젝트의 대상 아키텍처를 에뮬레이션하는 데 필요한 충분한 정보가 제공됩니다. 그러나 컴파일러 경로를 쿼리하여 반환된 정의를 기반으로 확장이 올바르게 선택할 수 있는 경우 IntelliSense 모드 설정이 필요하지 않을 수 있습니다.

컴파일러 경로

프로젝트 빌드에 사용하는 컴파일러의 전체 경로로 설정합니다.

예를 들어,

Compiler path setting

IntelliSense 모드

사용하는 컴파일러의 아키텍처별 변형으로 설정합니다.

예를 들어,

IntelliSense mode setting

포함 경로

프로그램에 작업 영역에 없거나 표준 라이브러리 경로에 없는 헤더 파일이 포함된 경우에만 포함 경로를 수정하면 됩니다.

C/C++ 확장은 컴파일러 경로로 지정된 컴파일러를 쿼리하여 포함 경로를 채웁니다. 확장이 대상 시스템 라이브러리의 경로를 찾을 수 없으면 포함 경로를 수동으로 입력할 수 있습니다.

Include path setting

위 설정을 고려할 때 c_cpp_configuration.json 파일은 다음과 유사하게 보일 것입니다. 명령 팔레트에서 C/C++: 구성 편집(JSON)을 선택하여 열 수 있습니다.

{
  "configurations": [
    {
      "name": "myConfigurationName",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "compilerPath": "/usr/bin/arm-none-eabi-g++",
      "cStandard": "c11",
      "cppStandard": "c++14",
      "IntelliSenseMode": "gcc-arm"
    }
  ],
  "version": 4
}

다음 단계

© . This site is unofficial and not affiliated with Microsoft.