c_cpp_properties.json リファレンス

この記事では、c_cpp_properties.json 設定ファイルのスキーマについて説明します。

プロジェクトの構成を開始するには、「IntelliSense の構成」を参照してください。これらの設定の変更の詳細については、「デフォルト設定のカスタマイズ」を参照してください。

変数の例

注: これはすべてのフィールドの例です。c_cpp_properties.json ファイルですべてのフィールドを指定する必要はありません。拡張機能は、欠落しているフィールドをデフォルト値で自動的に入力します。

{
  "env": {
    "myIncludePath": ["${workspaceFolder}/include", "${workspaceFolder}/src"],
    "myDefines": ["DEBUG", "MY_FEATURE=1"]
  },
  "configurations": [
    {
      "name": "Linux",
      "compilerPath": "/usr/bin/gcc",
      "compilerArgs": ["-m32"],
      "intelliSenseMode": "linux-gcc-x86",
      "includePath": ["${myIncludePath}", "/usr/include"],
      "defines": ["${myDefines}"],
      "cStandard": "gnu11",
      "cppStandard": "gnu++14",
      "configurationProvider": "ms-vscode.cmake-tools",
      "forcedInclude": ["${workspaceFolder}/common.h"],
      "compileCommands": "${workspaceFolder}/build/compile_commands.json",
      "dotConfig": "${workspaceFolder}/.config",
      "mergeConfigurations": true,
      "customConfigurationVariables": {
        "myVar": "myvalue"
      },
      "browse": {
        "path": ["${myIncludePath}", "/usr/include", "${workspaceFolder}"],
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": "${workspaceFolder}/.vscode/browse.vc.db"
      }
    },
    {
      "name": "Mac",
      "compilerPath": "/usr/bin/clang",
      "intelliSenseMode": "macos-clang-x64",
      "includePath": ["${myIncludePath}"],
      "defines": ["${myDefines}"],
      "cStandard": "c11",
      "cppStandard": "c++17",
      "macFrameworkPath": ["/System/Library/Frameworks", "/Library/Frameworks"],
      "browse": {
        "path": ["${myIncludePath}", "${workspaceFolder}"]
      }
    },
    {
      "name": "Win32",
      "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe",
      "intelliSenseMode": "windows-msvc-x64",
      "includePath": ["${myIncludePath}"],
      "defines": ["${myDefines}", "_WINDOWS"],
      "cStandard": "c17",
      "cppStandard": "c++20",
      "windowsSdkVersion": "10.0.19041.0",
      "browse": {
        "path": ["${myIncludePath}", "${workspaceFolder}"]
      }
    }
  ],
  "version": 4,
  "enableConfigurationSquiggles": true
}

トップレベルのプロパティ

  • env 標準の環境変数構文 (${<var>} または ${env:<var>}) を使用して構成内で置換に使用できるユーザー定義変数の配列。文字列と文字列の配列が許可されます。

  • configurations IntelliSense エンジンにプロジェクトとユーザー設定に関する情報を提供する構成オブジェクトの配列。デフォルトでは、拡張機能はオペレーティングシステムに基づいて構成を作成します。追加の構成を追加することもできます。

  • version このフィールドは編集しないことをお勧めします。これは、c_cpp_properties.json ファイルの現在のバージョンを追跡し、拡張機能がどのプロパティと設定が存在する必要があるか、およびこのファイルを最新バージョンにアップグレードする方法を認識できるようにします。

  • enableConfigurationSquiggles true に設定すると、c_cpp_properties.json ファイルで検出されたエラーを C/C++ 拡張機能に報告します。

構成プロパティ

  • name 構成を識別するフレンドリ名。LinuxMac、および Win32 は、これらのプラットフォームで自動選択される構成の特別な識別子です。VS Code のステータスバーには、アクティブな構成が表示されます。ステータスバーのラベルを選択して、アクティブな構成を変更することもできます。

  • compilerPath (オプション) プロジェクトのビルドに使用するコンパイラのフルパス (例: /usr/bin/gcc)。より正確な IntelliSense を有効にするため。拡張機能はコンパイラーにクエリを実行して、IntelliSense に使用するシステムのインクルードパスとデフォルトの定義を決定します。

    "compilerPath": "" (空の文字列) を指定すると、コンパイラーのクエリがスキップされます。これは、指定されたコンパイラーがクエリに使用される引数をサポートしていない場合に役立ちます。拡張機能は、検出できるコンパイラー (Visual C など) にデフォルトで戻ります。compilerPath プロパティを省略しても、クエリはスキップされません。

  • compilerArgs (オプション) 使用されるインクルードまたは定義を変更するためのコンパイラー引数 (例: -nostdinc++-m32 など)。追加のスペース区切りの引数を取る引数は、配列内の個別の引数として入力する必要があります。たとえば、--sysroot <arg> の場合は、\"--sysroot\", \"<arg>\" を使用します。

  • intelliSenseMode MSVC、gcc、または Clang のアーキテクチャ固有のバリアントにマッピングする IntelliSense モードを使用します。設定されていない場合、または ${default} に設定されている場合、拡張機能はそのプラットフォームのデフォルトを選択します。

    プラットフォームのデフォルト

    • Windows: windows-msvc-x64
    • Linux: linux-gcc-x64
    • macOS: macos-clang-x64

    <compiler>-<architecture> バリアント (例: gcc-x64) のみを指定する IntelliSense モードはレガシーモードであり、ホストプラットフォームに基づいて <platform>-<compiler>-<architecture> バリアントに自動的に変換されます。

  • includePath インクルードパスは、ソースファイルに含まれるヘッダーファイル (#include "myHeaderFile.h" など) を含むフォルダーです。IntelliSense エンジンがインクルードされたヘッダーファイルを検索する際に使用するパスのリストを指定します。これらのパスでの検索は再帰的ではありません。再帰検索を示すには ** を指定します。たとえば、${workspaceFolder}/** はすべてのサブディレクトリを検索しますが、${workspaceFolder} は検索しません。Windows で Visual Studio がインストールされている場合、または compilerPath 設定でコンパイラーが指定されている場合は、システムインクルードパスをこのリストにリストする必要はありません。

  • defines IntelliSense エンジンがファイルを解析する際に使用するプリプロセッサ定義のリスト。オプションで、= を使用して値を設定します (例: VERSION=1)。

  • cStandard IntelliSense に使用する C 言語標準のバージョン。例: c17gnu23、または ${default}。GNU 標準は、GNU 定義を取得するために設定されたコンパイラーにクエリを実行するためにのみ使用され、IntelliSense は同等の C 標準バージョンをエミュレートすることに注意してください。

  • cppStandard IntelliSense に使用する C++ 言語標準のバージョン。例: c++20gnu++23、または ${default}。注: GNU 標準は、GNU 定義を取得するために設定されたコンパイラーにクエリを実行するためにのみ使用され、IntelliSense は同等の C++ 標準バージョンをエミュレートします。

  • configurationProvider ソースファイルの IntelliSense 構成情報を提供できる VS Code 拡張機能の ID。たとえば、VS Code 拡張機能 ID ms-vscode.cmake-tools を使用して、CMake Tools 拡張機能から構成情報を提供します。configurationProvider を指定した場合、提供される構成は、c_cpp_properties.json の他の設定よりも優先されます。

    configurationProvider 候補の拡張機能は、vscode-cpptools-api を実装する必要があります。

  • windowsSdkVersion Windows で使用する Windows SDK インクルードパスのバージョン (例: 10.0.17134.0)。

  • macFrameworkPath IntelliSense エンジンが Mac フレームワークからのインクルードヘッダーを検索する際に使用するパスのリスト。macOS の構成でのみサポートされています。

  • forcedInclude (オプション) ソースファイル内の他の文字が処理される前にインクルードする必要があるファイルのリスト。ファイルはリストされた順にインクルードされます。

  • compileCommands (オプション) ワークスペースの compile_commands.json ファイルへのフルパス。エディターで開いているファイルに対して compile_commands.json に一致するエントリがある場合、そのコマンドラインは、c_cpp_properties.json の他のフィールドの代わりに、そのファイルの IntelliSense を構成するために使用されます。ファイル形式の詳細については、Clang ドキュメントを参照してください。CMake などの一部のビルドシステムでは、このファイルの生成を簡略化します。

  • dotConfig Kconfig システムによって作成された .config ファイルへのパス。Kconfig システムは、プロジェクトのビルドに必要なすべての定義を含むファイルを生成します。Kconfig システムを使用するプロジェクトの例としては、Linux カーネルと NuttX RTOS があります。

  • mergeConfigurations インクルードパス、定義、および強制インクルードを構成プロバイダーからのものとマージするには、true に設定します。

  • customConfigurationVariables launch.json または tasks.json の入力変数に使用するために、コマンド ${cpptools:activeConfigCustomVariable} を介してクエリできるカスタム変数。

  • browse "C_Cpp.intelliSenseEngine""Tag Parser" (「あいまい」IntelliSense または「browse」エンジンとも呼ばれます) に設定されている場合に使用されるプロパティのセット。これらのプロパティは、定義/宣言へ移動機能、または「デフォルト」IntelliSense エンジンがソースファイル内の #includes を解決できない場合にも使用されます。

参照プロパティ

  • path タグパーサーがソースファイルによってインクルードされたヘッダーを検索するパスのリスト。省略した場合、includePathpath として使用されます。これらのパスでの検索はデフォルトで再帰的です。非再帰検索を示すには * を指定します。例: ${workspaceFolder} はすべてのサブディレクトリを検索しますが、${workspaceFolder}/* は検索しません。

  • limitSymbolsToIncludedHeaders true の場合、タグパーサーは ${workspaceFolder} 内のソースファイルによって直接または間接的にインクルードされたコードファイルのみを解析します。false の場合、タグパーサーは browse.path リストで指定されたパスにあるすべてのコードファイルを解析します。

  • databaseFilename 生成されたシンボルデータベースへのパス。このプロパティは、拡張機能にタグパーサーのシンボルデータベースをワークスペースのデフォルトのストレージの場所とは別の場所に保存するように指示します。相対パスが指定された場合、ワークスペースフォルダー自体ではなく、ワークスペースのデフォルトのストレージの場所からの相対パスになります。${workspaceFolder} 変数を使用して、ワークスペースフォルダーからの相対パス (例: ${workspaceFolder}/.vscode/browse.vc.db) を指定できます。

サポートされている変数

tasks.json または launch.jsonc_cpp_properties.json から現在のアクティブな構成をクエリできるようにすることができます。これを行うには、tasks.json または launch.json スクリプトの引数として変数 ${command:cpptools.activeConfigName} を使用します。