ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

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))

Command Palette

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, long und 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

Compiler path setting

IntelliSense-Modus

Setzen Sie dies auf die architekturabhängige Variante des Compilers, den Sie verwenden.

Zum Beispiel

IntelliSense mode setting

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

Include path setting

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

© . This site is unofficial and not affiliated with Microsoft.