に参加して、VS Code の AI 支援開発について学びましょう。

クロスコンパイルのための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を提供し、pointersize_tlongなどのデータ型の正しいサイズを反映できるように、ターゲットアーキテクチャとコンパイラをエミュレートします。

最低限、コンパイラパス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.