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 行為的一個或多個附加開關
forcedInclude 會自動包含在每個編譯單元的標頭(對於 MSVC,映射到 /FI;對於 clang,映射到 -include)
undefines 未定義的宏的列表(對於 MSVC,映射到 /U)
intelliSenseMode 要使用的 IntelliSense 引擎。 你可以為 MSVC、gcc 或 Clang 指定預定義體系結構特定的變量之一。
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-x86 和 msvc-x64 值。 改用 windows-msvc-* 變量。

預定義環境

Visual Studio 為 Microsoft C++ 提供了以下預定義環境,它們會映射到相應的開發人員命令提示。 當繼承其中一個環境時,可以通過使用具有以下宏語法的 global 屬性來引用任何環境變量 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 屬性來定義 environments 中的變量集全局或每個配置。 這些變量的行為類似於打開文件夾項目上下文中的環境變量,並且可以使用 $ {env 進行訪問。 <在 > 此處定義了來自<的>語法} 語法。 但是,不一定要在 Visual Studio 內部使用的任何命令提示符中將它們設置為實際環境變量。

2019 16.4 及更高版本:cppproperties.json中定義的特定於配置的變量由調試目標和任務自動選取,無需設置 。 Visual Studio 調試目標會使用在 CppProperties.json 中指定的環境自動啟動。

Visual Studio 2019 版本16.3 及更早版本:使用環境時,必須在屬性中指定該環境, 即使環境定義為相同配置的一部分,屬性也將 environment 指定環境的名稱。 下面的示例演示在 MSYS2 安裝中為 GCC 啟用 IntelliSense 的示例配置。 請注意配置如何定義和繼承 mingw_64 環境,以及 includePath 屬性如何訪問 INCLUDE 變量。

JSON
"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"
        }
      ]
    }
  ]

在配置中定義環境 屬性時,它將替代任何同名的全局變量。

內置宏

可訪問 CppProperties.json 中的下列內置宏:

內置宏
說明
${workspaceRoot} 工作區文件夾的完整路徑
${projectRoot} CppProperties.json 所在文件夾的完整路徑
${env.vsInstallDir} 安裝 Visual Studio 的運行示例的文件夾的完整路徑

示例

如果項目具備包含文件夾並包含 windows.h 和 Windows SDK 中的其他通用標頭,可能需要更新 CppProperties.json 配置文件,使其帶有以下包含內容:

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"
      ]
    }
  ]
}

 備注

%WindowsSdkDir% 和 %VCToolsInstallDir% 並不是作為全局環境變量設置的,請確保從定義這些變量的開發人員命令提示啟動 devenv.exe。 (在 Windows“開始”菜單中鍵入“developer”。)

對 IntelliSense 錯誤進行故障排除

如果未看到期望的 IntelliSense,可以通過訪問"工具""選項""文本編輯器 C/C++高級 ",將"啟用日志記錄"設置為 進行故障排除 。 若要開始,請嘗試將“日志記錄級別”設置為 5,“日志記錄篩選器”設置為 8 。

“選項”對話框中“診斷日志記錄”設置的屏幕截圖。

輸出會傳遞給“輸出窗口”,並在選擇“顯示輸出來源 : Visual C++ 日志”時顯示。 除了其他內容之外,輸出還包含 IntelliSense 嘗試使用的實際包含路徑的列表。 如果路徑與 CppProperties.json 中的路徑不匹配,請嘗試關閉文件夾並刪除包含緩存瀏覽數據的 .vs 子文件夾。

若要對缺少包含路徑引起的 IntelliSense 錯誤進行故障排除,請打開“錯誤列表”,篩選出“僅限 IntelliSense”和錯誤代碼 E1696“無法打開源文件...”的結果 。

 

from: https://docs.microsoft.com/zh-cn/cpp/build/cppproperties-schema-reference?view=msvc-170&viewFallbackFrom=vs-2015


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM