跨平台編譯的 IntelliSense
本文說明如何設定 C/C++ 擴充功能,以便在您為與開發主機不同的架構進行編譯時,在 Visual Studio Code 中提供適當的 IntelliSense (例如程式碼完成)。例如,當您的主機是 x64,但您要為 Arm 編譯時。
C/C++ 擴充功能不是編譯器,它提供豐富的語言功能,例如語法醒目提示和 IntelliSense。為了讓擴充功能提供正確的 IntelliSense 建議並反映正確的資料類型大小,您需要設定 C++ 擴充功能來模擬目標架構。
這些設定組態儲存在您專案的 c_cpp_properties.json
檔案中。若要編輯此檔案,請在 VS Code 中,從命令面板選取 **C/C++: 編輯組態 (UI)** (⇧⌘P (Windows、Linux Ctrl+Shift+P))
IntelliSense 設定範例
以下說明如何為以 Linux Arm 為目標的 Linux x64 主機設定 C/C++ 擴充功能。它會設定下列 IntelliSense 設定
- **編譯器路徑**:擴充功能會在此位置查詢您的編譯器,以擷取系統程式庫和編譯器定義。
- **IntelliSense 模式**:模擬目標架構和編譯器,讓擴充功能可以提供正確的 IntelliSense 並反映正確的資料類型大小,例如
pointer
、size_t
、long
等等。
至少,設定**編譯器路徑**和 **IntelliSense 模式**提供了足夠的資訊,讓擴充功能模擬您專案的目標架構,儘管如果擴充功能能夠根據從查詢**編譯器路徑**傳回的定義正確選擇 **IntelliSense 模式**,則可能不需要設定它。
編譯器路徑
設定為您用來建置專案的編譯器完整路徑。
例如
IntelliSense 模式
設定為您使用的編譯器特定架構變體。
例如
包含路徑
只有當您的程式包含不在工作區或標準程式庫路徑中的標頭檔時,才需要修改**包含路徑**。
C/C++ 擴充功能會透過查詢 **編譯器路徑** 指定的編譯器來填入包含路徑。如果擴充功能找不到目標系統程式庫的路徑,您可以手動輸入包含路徑
根據上述設定,您的 c_cpp_configuration.json
檔案看起來會像以下這樣。您可以從命令面板選取 **C/C++: 編輯組態 (JSON)** 來開啟它
{
"configurations": [
{
"name": "myConfigurationName",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/arm-none-eabi-g++",
"cStandard": "c11",
"cppStandard": "c++14",
"IntelliSenseMode": "gcc-arm"
}
],
"version": 4
}
後續步驟
- 如需有關 IntelliSense 設定的詳細資訊,請參閱自訂預設設定。
- 如果您在設定組態時遇到問題,請在GitHub 討論區開始討論,或者如果您發現需要修正的問題,請在GitHub 問題中提交問題。
- 探索c_cpp_properties 結構描述。
- 檢閱C++ 擴充功能概觀。