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 の場合は /FI 、clang の場合は -include にマップされます) |
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
を使用して、次のマクロ構文を使用して任意の環境変数を参照できます: ${env.VARIABLE}
。
変数名 | 説明 |
---|---|
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
およびlaunch.vs.json
から${env.VARIABLE}
構文を使用してそれらにアクセスできます。 ただし、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 が表示されない場合は、 Tools>Options>Text Editor>C/C++>Advanced に移動し、 ログ記録を有効にする を true
に設定してトラブルシューティングを行うことができます。 まずは、[ログ記録レベル] を 5 に設定し、[ログ フィルター] を 8 に設定してみてください。
出力は出力ウィンドウにパイプ処理されShow Output From: Visual C++ Log を選択すると表示されます。 出力には、特に、IntelliSense が使用しようとしている実際のインクルード パスの一覧が含まれます。 パスが CppProperties.json
のパスと一致しない場合は、フォルダーを閉じて、キャッシュされた閲覧データを含む .vs
サブフォルダーを削除してみてください。
インクルード パスが見つからない場合に発生する IntelliSense エラーのトラブルシューティングを行うには、Error List タブを開き、出力を "IntelliSense のみ" にフィルター処理し、エラー コード E1696 "ファイルをオープンソースできません..."。