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
構成を識別するフレンドリ名。Linux
、Mac
、および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>
バリアントに自動的に変換されます。 - Windows:
-
includePath
インクルードパスは、ソースファイルに含まれるヘッダーファイル (#include "myHeaderFile.h"
など) を含むフォルダーです。IntelliSense エンジンがインクルードされたヘッダーファイルを検索する際に使用するパスのリストを指定します。これらのパスでの検索は再帰的ではありません。再帰検索を示すには**
を指定します。たとえば、${workspaceFolder}/**
はすべてのサブディレクトリを検索しますが、${workspaceFolder}
は検索しません。Windows で Visual Studio がインストールされている場合、またはcompilerPath
設定でコンパイラーが指定されている場合は、システムインクルードパスをこのリストにリストする必要はありません。 -
defines
IntelliSense エンジンがファイルを解析する際に使用するプリプロセッサ定義のリスト。オプションで、=
を使用して値を設定します (例:VERSION=1
)。 -
cStandard
IntelliSense に使用する C 言語標準のバージョン。例:c17
、gnu23
、または${default}
。GNU 標準は、GNU 定義を取得するために設定されたコンパイラーにクエリを実行するためにのみ使用され、IntelliSense は同等の C 標準バージョンをエミュレートすることに注意してください。 -
cppStandard
IntelliSense に使用する C++ 言語標準のバージョン。例:c++20
、gnu++23
、または${default}
。注: GNU 標準は、GNU 定義を取得するために設定されたコンパイラーにクエリを実行するためにのみ使用され、IntelliSense は同等の C++ 標準バージョンをエミュレートします。 -
configurationProvider
ソースファイルの IntelliSense 構成情報を提供できる VS Code 拡張機能の ID。たとえば、VS Code 拡張機能 IDms-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
タグパーサーがソースファイルによってインクルードされたヘッダーを検索するパスのリスト。省略した場合、includePath
がpath
として使用されます。これらのパスでの検索はデフォルトで再帰的です。非再帰検索を示すには*
を指定します。例:${workspaceFolder}
はすべてのサブディレクトリを検索しますが、${workspaceFolder}/*
は検索しません。 -
limitSymbolsToIncludedHeaders
true の場合、タグパーサーは${workspaceFolder}
内のソースファイルによって直接または間接的にインクルードされたコードファイルのみを解析します。false の場合、タグパーサーはbrowse.path
リストで指定されたパスにあるすべてのコードファイルを解析します。 -
databaseFilename
生成されたシンボルデータベースへのパス。このプロパティは、拡張機能にタグパーサーのシンボルデータベースをワークスペースのデフォルトのストレージの場所とは別の場所に保存するように指示します。相対パスが指定された場合、ワークスペースフォルダー自体ではなく、ワークスペースのデフォルトのストレージの場所からの相対パスになります。${workspaceFolder}
変数を使用して、ワークスペースフォルダーからの相対パス (例:${workspaceFolder}/.vscode/browse.vc.db
) を指定できます。
サポートされている変数
tasks.json
または launch.json
が c_cpp_properties.json
から現在のアクティブな構成をクエリできるようにすることができます。これを行うには、tasks.json
または launch.json
スクリプトの引数として変数 ${command:cpptools.activeConfigName}
を使用します。