CppProperties.json
参照
CMake を使用しないフォルダー プロジェクトを開く場合、IntelliSense のプロジェクト構成設定をファイルに CppProperties.json
格納できます。 (CMake プロジェクトではファイルが CMakeSettings.json
使用されます)。構成は、名前と値のペアで構成され、#include パス、コンパイラ スイッチ、およびその他のパラメーターを定義します。 "フォルダーを開く" プロジェクトに構成を追加する方法の詳細については、C++ の "フォルダーを開く" プロジェクトに関するページを参照してください。 次のセクションは、さまざまな設定をまとめたものです。 スキーマの完全な説明については、CppProperties_schema.json に移動します。この完全なパスは、開いているときにCppProperties.json
コード エディターの上部に表示されます。
構成プロパティ
構成には、次のどのプロパティでも含めることができます。
名前 | 説明 |
---|---|
inheritEnvironments |
この構成に適用する環境を指定します。 |
name |
C++ の構成ドロップダウンに表示される構成の名前 |
includePath |
インクルード パスで指定する必要があるフォルダーのコンマ区切りのリスト (ほとんどのコンパイラに /I 対応) |
defines |
定義する必要があるマクロの一覧 (ほとんどのコンパイラに /D マップされます) |
compilerSwitches |
IntelliSense の動作に影響を与えることができる 1 つ以上の追加スイッチ |
forcedInclude |
すべてのコンパイル ユニットに自動的に含まれるヘッダー (MSVC または -include clang 用に/FI マップ) |
undefines |
未定義のマクロの一覧 (MSVC 用に /U マップ) |
intelliSenseMode |
使用する IntelliSense エンジン。 MSVC、gcc、または Clang に対する定義済みのアーキテクチャ固有バリアントの 1 つを指定できます。 |
environments |
コマンド プロンプトで環境変数と同様に動作し、マクロを使用して ${env.VARIABLE} アクセスされる変数のユーザー定義セット。 |
intelliSenseMode 値
コード エディターでは、入力を開始すると、使用可能なオプションが次のように表示されます。
この一覧には、サポートされている値が表示されます。
windows-msvc-x86
windows-msvc-x64
windows-msvc-arm
windows-msvc-arm64
android-clang-x86
android-clang-x64
android-clang-arm
android-clang-arm64
ios-clang-x86
ios-clang-x64
ios-clang-arm
ios-clang-arm64
windows-clang-x86
windows-clang-x64
windows-clang-arm
windows-clang-arm64
linux-gcc-x86
linux-gcc-x64
linux-gcc-arm
注: 値 msvc-x86
は msvc-x64
、従来の理由でのみサポートされています。 代わりに、windows-msvc-*
のバリアントを使ってください。
定義済みの環境
Visual Studio には、対応する開発者コマンド プロンプトにマップされる、Microsoft C++ 向けの次の定義済みの環境が用意されています。 これらの環境のいずれかを継承する場合は、次のマクロ構文${env.VARIABLE}
でグローバル プロパティenv
を使用して、任意の環境変数を参照できます。
変数名 | 説明 |
---|---|
vsdev |
既定の Visual Studio 環境 |
msvc_x86 |
x86 ツールを使って、x86 用にコンパイルします |
msvc_x64 |
64 ビット ツールを使って、AMD64 用にコンパイルします |
msvc_arm |
x86 ツールを使って、ARM 用にコンパイルします |
msvc_arm64 |
x86 ツールを使って、ARM64 用にコンパイルします |
msvc_x86_x64 |
x86 ツールを使って、AMD64 用にコンパイルします |
msvc_arm_x64 |
64 ビット ツールを使って、ARM 用にコンパイルします |
msvc_arm64_x64 |
64 ビット ツールを使って、ARM64 用にコンパイルします |
Linux ワークロードがインストールされている場合、Linux および WSL をリモートでターゲットにするために次の環境変数を使用できます。
変数名 | 説明 |
---|---|
linux_x86 |
x86 Linux をリモートでターゲットにします |
linux_x64 |
x64 Linux をリモートでターゲットにします |
linux_arm |
ARM Linux をリモートでターゲットにします |
ユーザー定義環境
必要に応じて、このプロパティを environments
使用して、グローバルまたは構成ごとに変数 CppProperties.json
のセットを定義できます。 これらの変数は、フォルダーを開くプロジェクトのコンテキストで環境変数と同様に動作します。 ここで定義した構文tasks.vs.json
を${env.VARIABLE}
使用してlaunch.vs.json
、それらにアクセスできます。 ただし、Visual Studio が内部で使用するコマンド プロンプトでは、必ずしも実際の環境変数として設定されるとは限りません。
Visual Studio 2019 バージョン 16.4 以降: 定義されている構成固有の変数 CppProperties.json
は、設定する必要なく、デバッグ ターゲットとタスクによって自動的に inheritEnvironments
取得されます。 デバッグ ターゲットは、指定した環境で自動的に CppProperties.json
起動されます。
Visual Studio 2019 バージョン 16.3 以前: 環境を使用する場合は、その環境が同じ構成の一部として定義されている場合でも、それを inheritsEnvironments
プロパティで指定する必要があります。environment
プロパティは環境の名前を指定します。 次の例は、MSYS2 インストールで GCC 用の IntelliSense を有効にするためのサンプル構成を示しています。 構成によって mingw_64
環境が定義および継承される方法と、includePath
プロパティが INCLUDE
変数にアクセスする方法に注意してください。
"configurations": [
{
"inheritEnvironments": [
"mingw_64"
],
"name": "Mingw64",
"includePath ,": [
"${env.INCLUDE}",
"${workspaceRoot}\\**",
],
"intelliSenseMode": "linux-gcc-x64",
"environments": [
{
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
"TOOLSET_VERSION": "9.1.0",
"PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR};",
"environment": "mingw_64"
}
]
}
]
構成内でプロパティを "environments"
定義すると、同じ名前のグローバル変数がオーバーライドされます。
組み込みマクロ
CppProperties.json
内の次の組み込みマクロにアクセスできます。
マクロ | 説明 |
---|---|
${workspaceRoot} |
ワークスペース フォルダーへの完全なパスです |
${projectRoot} |
配置されている CppProperties.json フォルダーへの完全なパス |
${env.vsInstallDir} |
Visual Studio の実行中のインスタンスがインストールされているフォルダーへの完全なパスです |
例
プロジェクトにインクルード フォルダーがあり、Windows SDK の * やその他の一般的なヘッダーも含まれている *windows.h
場合は、次の内容を使用して構成ファイルを CppProperties.json
更新できます。
{
"configurations": [
{
"name": "Windows",
"includePath": [
// local include folder
"${workspaceRoot}\\include",
// Windows SDK and CRT headers
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\ucrt",
"${env.NETFXSDKDir}\\include\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\um",
"${env.WindowsSdkDir}\\include\\${env.WindowsSDKVersion}\\shared",
"${env.VCToolsInstallDir}\\include"
]
}
]
}
Note
%WindowsSdkDir%
グローバル %VCToolsInstallDir%
環境変数として設定されていません。 必ず、これらの変数を定義する開発者コマンド プロンプトから開始 devenv.exe
してください。 (Windows のスタート メニューに「developer」と入力して、開発者コマンド プロンプトのショートカットを見つけます)。
IntelliSense エラーのトラブルシューティング
予想される IntelliSense が表示されない場合は、[ツール>オプション テキスト エディター>C/C++>詳細設定]>に移動し、[ログ記録を有効にする] に設定してトラブルシューティングを行true
うことができます。 まずは、[ログ記録レベル] を 5 に設定し、[ログ フィルター] を 8 に設定してみてください。
出力は出力ウィンドウにパイプ処理され、[出力元の表示: Visual C++ ログ] を選択すると表示されます。 出力には、特に、IntelliSense が使用しようとしている実際のインクルード パスの一覧が含まれます。 パスが一致 CppProperties.json
しない場合は、フォルダーを閉じて、キャッシュされた参照データを .vs
含むサブフォルダーを削除してみてください。
インクルード パスが見つからない場合に発生する IntelliSense エラーのトラブルシューティングを行うには、[エラー一覧] タブを開き、その出力を "IntelliSense のみ" にフィルター処理し、エラー コード E1696 "ファイルをオープンソースできません..."。