次の方法で共有


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 値

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

エディターでの IntelliSense ポップアップのスクリーンショット。

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

  • 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 を使用して、次のマクロ構文を使用して任意の環境変数を参照できます: ${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 "ファイルをオープンソースできません..."。