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 値

コード エディターでは、入力を開始すると、使用可能なオプションが次のように表示されます。

Screenshot of the IntelliSense pop-up in the editor.

この一覧には、サポートされている値が表示されます。

  • 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-x86msvc-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 に設定してみてください。

Screenshot of the Diagnostic logging settings in the Options dialog.

出力は出力ウィンドウパイプ処理され、[出力元の表示: Visual C++ ログ] を選択すると表示されます。 出力には、特に、IntelliSense が使用しようとしている実際のインクルード パスの一覧が含まれます。 パスが一致 CppProperties.jsonしない場合は、フォルダーを閉じて、キャッシュされた参照データを .vs 含むサブフォルダーを削除してみてください。

インクルード パスが見つからない場合に発生する IntelliSense エラーのトラブルシューティングを行うには、[エラー一覧] タブを開き、その出力を "IntelliSense のみ" にフィルター処理し、エラー コード E1696 "ファイルをオープンソースできません..."。