IntelliSense für Cross-Compilierung
Dieser Artikel befasst sich mit der Konfiguration der C/C++-Erweiterung, um IntelliSense (z. B. Codevervollständigungen) in Visual Studio Code bereitzustellen, wenn Sie für eine andere Architektur kompilieren als Ihre Entwicklungs-Hostmaschine. Zum Beispiel, wenn Ihre Hostmaschine x64 ist, Sie aber für Arm kompilieren.
Die C/C++-Erweiterung ist kein Compiler – sie bietet reichhaltige Sprachfunktionen wie Syntaxhervorhebung und IntelliSense. Damit die Erweiterung korrekte IntelliSense-Vorschläge liefern und die richtigen Größen von Datentypen widerspiegeln kann, müssen Sie die C++-Erweiterung so konfigurieren, dass sie die Zielarchitektur emuliert.
Diese Konfigurationseinstellungen werden in der Datei c_cpp_properties.json Ihres Projekts gespeichert. Um diese Datei zu bearbeiten, wählen Sie in VS Code über die Befehlspalette (Command Palette) C/C++: Konfigurationen bearbeiten (UI) aus (⇧⌘P (Windows, Linux Ctrl+Shift+P))

Beispielhafte IntelliSense-Konfiguration
Das Folgende zeigt die Konfiguration der C/C++-Erweiterung für eine Linux x64-Hostmaschine, die auf Linux Arm abzielt. Es konfiguriert die folgenden IntelliSense-Einstellungen
- Compiler-Pfad: Die Erweiterung fragt Ihren Compiler an diesem Speicherort ab, um Systembibliotheken und Compiler-Defines abzurufen.
- IntelliSense-Modus: Emuliert die Zielarchitektur und den Compiler, damit die Erweiterung korrektes IntelliSense bereitstellen und die richtigen Größen von Datentypen wie
pointer,size_t,longund so weiter widerspiegeln kann.
Mindestens die Einstellung des Compiler-Pfads und des IntelliSense-Modus liefert genügend Informationen für die Erweiterung, um die Zielarchitektur Ihres Projekts zu emulieren, obwohl die Einstellung des IntelliSense-Modus möglicherweise nicht erforderlich ist, wenn die Erweiterung ihn basierend auf den aus der Abfrage des Compiler-Pfads zurückgegebenen Defines korrekt auswählen kann.
Compilerpfad
Setzen Sie dies auf den vollständigen Pfad des Compilers, den Sie zum Erstellen Ihres Projekts verwenden.
Zum Beispiel

IntelliSense-Modus
Setzen Sie dies auf die architekturabhängige Variante des Compilers, den Sie verwenden.
Zum Beispiel

Include-Pfad
Sie müssen den Include-Pfad nur dann ändern, wenn Ihr Programm Header-Dateien enthält, die sich nicht in Ihrem Workspace oder nicht im Standard-Bibliotheks-Pfad befinden.
Die C/C++-Erweiterung füllt den Include-Pfad auf, indem sie den durch den Compiler-Pfad angegebenen Compiler abfragt. Wenn die Erweiterung den Pfad für die Zielsystembibliotheken nicht finden kann, können Sie den Include-Pfad manuell eingeben

Bei den obigen Einstellungen sieht Ihre Datei c_cpp_configuration.json ungefähr so aus. Sie können sie öffnen, indem Sie über die Befehlspalette C/C++: Konfigurationen bearbeiten (JSON) auswählen
{
"configurations": [
{
"name": "myConfigurationName",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"compilerPath": "/usr/bin/arm-none-eabi-g++",
"cStandard": "c11",
"cppStandard": "c++14",
"IntelliSenseMode": "gcc-arm"
}
],
"version": 4
}
Nächste Schritte
- Weitere Informationen zur IntelliSense-Konfiguration finden Sie unter Anpassen von Standardeinstellungen.
- Wenn Sie Probleme bei der Konfiguration der Einstellungen haben, starten Sie eine Diskussion auf GitHub-Diskussionen, oder wenn Sie ein Problem finden, das behoben werden muss, reichen Sie ein Issue bei GitHub-Issues ein.
- Überprüfen Sie die Übersicht über die C++-Erweiterung.