Freigeben über


Konfigurieren eines auf MSBuild basierenden C++-Projekts für Linux in Visual Studio

Die Unterstützung für Linux ist in Visual Studio 2017 und höher verfügbar.

In diesem Thema wird das Konfigurieren eines auf MSBuild basierenden C++-Projekts für Linux entsprechend der Erläuterung unter Erstellen eines auf MSBuild basierenden C++-Projekts für Linux in Visual Studio beschrieben. Informationen zu CMake-Projekten für Linux finden Sie unter Konfigurieren eines Linux-CMake-Projekts.

Sie können ein Linux-Projekt so konfigurieren, dass dieses auf einen physischen Linux-Computer, einen virtuellen Computer oder das Windows-Subsystem für Linux (WSL) abzielt.

Visual Studio 2019, Version 16.1 und höher:

  • Wenn Sie WSL als Ziel verwenden, können Sie die Kopiervorgänge vermeiden, die erforderlich sind, um IntelliSense-Ergebnisse zu generieren und abzurufen, die erforderlich sind, wenn Sie ein Linux-Remotesystem als Ziel verwenden.

  • Sie können separate Linux-Ziele zum Erstellen und Debuggen angeben.

Allgemeine Einstellungen

Wählen Sie zum Anzeigen von Konfigurationsoptionen das Menü Projekt > Eigenschaften aus, oder klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer und wählen Sie dann Eigenschaften aus dem Kontextmenü aus: Die allgemeinen Einstellungen werden angezeigt.

Screenshot des Dialogfelds „Eigenschaftenseiten“, „Allgemeine Konfiguration“.

Standardmäßig wird eine ausführbare Datei (.out) erstellt. Verwenden Sie zum Erstellen einer statischen oder dynamischen Bibliothek entweder die Einstellung Konfigurationstyp oder eine vorhandene Makefile-Datei.

Wenn Sie für das Windows-Subsystem für Linux (WSL) entwickeln, ist die WSL-Version 1 auf 64 parallele Kompilierungsprozesse beschränkt. Dies wird von der Maximale Anzahl paralleler Kompilierungsaufträge-Einstellung unter Konfigurationseigenschaften > C/C++ > Allgemein geregelt.

Unabhängig von der verwendeten WSL-Version sollten Sie Ninja zum Entwickeln verwenden, wenn Sie mehr als 64 parallele Kompilierungsprozesse beabsichtigen. Ninja ist allgemein schneller und zuverlässiger. Zum Erstellen mit Ninja verwenden Sie die Einstellung Inkrementellen Build aktivieren unter Konfigurationseigenschaften > Allgemein.

Weitere Informationen zu den Einstellungen auf den Eigenschaftenseiten finden Sie unter Linux Project Property Page Reference (Referenz zur Linux-Projekteigenschaftenseite).

Remoteeinstellungen

Konfigurieren Sie die Remoteeinstellungen, die unter Allgemein angezeigt werden, um die Einstellungen für den Linux-Remotecomputer zu ändern.

  • Verwenden Sie den Eintrag Remotebuildcomputer, um einen entfernten Linux-Zielcomputer anzugeben. Dadurch können Sie eine der zuvor erstellten Verbindungen auswählen. Weitere Informationen zum Erstellen eines neuen Eintrags finden Sie im Abschnitt Connecting to Your Remote Linux Computer (Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer).

    Screenshot zeigt die Remote-Build-Maschine.

    Visual Studio 2019, Version 16.7 und höher: Wenn Sie das Windows-Subsystem für Linux (WSL) als Ziel verwenden, legen Sie im Dropdownmenü PlattformtoolsetGCC für das Windows-Subsystem für Linux fest. Die anderen Remoteoptionen werden ausgeblendet, und der Pfad zur standardmäßigen WSL-Shell wird stattdessen angezeigt:

    Screenshot des WSL-Buildcomputers anzeigen.

    Wenn Sie über parallele WSL-Installationen verfügen, können Sie hier einen anderen Pfad angeben. Weitere Informationen zum Verwalten von mehreren Distributionen finden Sie unter Manage and configure Windows Subsystem for Linux (Verwalten und Konfigurieren von Windows-Subsystem für Linux).

    Auf der Seite Konfigurationseigenschaften>Debuggen können Sie ein anderes Ziel für das Debuggen angeben.

  • Das Remotebuild-Stammverzeichnis bestimmt das Stammverzeichnis, in dem das Projekt auf dem Linux-Remotecomputer erstellt wird. Standardmäßig handelt es sich dabei um ~/projects, sofern nicht anders angegeben.

  • Das Remotebuild-Projektverzeichnis ist das Verzeichnis, in dem dieses spezifische Projekt auf dem Linux-Remotecomputer erstellt wird. Standardmäßig handelt es sich dabei um das Verzeichnis $(RemoteRootDir)/$(ProjektName) . Es wird zu einem Verzeichnis erweitert, das den Namen des aktuellen Projekts unter dem oben angegebenen Stammverzeichnis trägt.

Hinweis

Verwenden Sie zum Ändern der C- und C++-Standardcompiler bzw. der Linker und Archivierungsprogramme, die zur Erstellung des Projekts verwendet werden, die entsprechenden Einträge im Abschnitt C/C++ > Allgemein sowie im Abschnitt Linker > Allgemein. Sie können beispielsweise eine bestimmte Version von GCC (GNU Compiler Collection) oder Clang angeben. Weitere Informationen finden Sie unter C/C++-Eigenschaften (Linux C++) und Linkereigenschaften (Linux C++).

Kopieren von Quellen (nur Remotesysteme)

Hinweis

Dieser Abschnitt gilt nicht, wenn auf WSL abgezielt wird.

Beim Erstellen auf Remotesystemen werden die Quelldateien auf Ihrem Entwicklungs-PC auf den Linux-Computer kopiert und dort kompiliert. Standardmäßig werden alle Datenquellen im Visual Studio-Projekt an die Speicherorte kopiert, die in den oben genannten Einstellungen festgelegt wurden. Zusätzliche Quellen können ebenfalls zur Liste hinzugefügt werden und das Kopieren von Datenquellen kann vollständig deaktiviert werden, was der Standardeinstellung für Makefile-Projekt entspricht.

  • Zu kopierende Quellen legt fest, welche Quellen auf den Remotecomputer kopiert werden. Standardmäßig sind in @(SourcesToCopyRemotely) alle Quellcodedateien im Projekt enthalten, jedoch keine Mediendateien wie Bilder.

  • Kopierquellen können aktiviert und deaktiviert werden, um das Kopieren von Quelldateien auf den Remotecomputer ein- oder auszuschalten.

  • Mit Weitere zu kopierende Quellen können Sie zusätzliche Quelldateien hinzufügen, die anschließend auf das Remotesystem kopiert werden. Sie können eine durch Semikolons getrennte Liste angeben, oder Sie können die Syntax : = verwenden, um einen lokalen und einen Remote-Namen anzugeben:

C:\Projects\ConsoleApplication1\MyFile.cpp:=~/projects/ConsoleApplication1/ADifferentName.cpp;C:\Projects\ConsoleApplication1\MyFile2.cpp:=~/projects/ConsoleApplication1/ADifferentName2.cpp;

Build-Ereignisse

Da die gesamte Kompilierung auf einem Remotecomputer (oder WSL) erfolgt, wurden dem Abschnitt „Build-Ereignisse“ in den Projekteigenschaften mehrere zusätzliche Build-Ereignisse hinzugefügt. Dazu gehören das Remote-Präbuildereignis, das Remote-Prälinkereignis und das Remote-Postbuildereignis, und diese Ereignisse finden auf dem Remotecomputer vor oder nach den einzelnen Schritten im Prozess statt.

Screenshot des Dialogfelds „Eigenschaftenseiten“ mit Ereignissen für den Build.

IntelliSense für Header auf Remotesystemen

Beim Hinzufügen einer neuen Verbindung im Verbindungs-Manager erkennt Visual Studio automatisch die Includeverzeichnisse für den Compiler auf dem Remotesystem. Visual Studio komprimiert diese Dateien dann und kopiert sie in ein Verzeichnis auf dem lokalen Windows-Computer. Nachdem Sie diese Verbindung in einem Visual Studio- oder CMake-Projekt nutzen, werden die Header in diesen Verzeichnissen zur Bereitstellung von IntelliSense verwendet.

Hinweis

In Visual Studio 2019, Version 16.5 und höher, wurde die Remote-Header-Kopie optimiert. Header werden nun bedarfsgesteuert kopiert, wenn ein Linux-Projekt geöffnet oder CMake für ein Linux-Ziel konfiguriert wird. Der Kopiervorgang erfolgt pro Projekt und im Hintergrund, basierend auf den angegebenen Compilern des Projekts. Weitere Informationen finden Sie unter Improvements to Accuracy and Performance of Linux IntelliSense (Verbesserung der Genauigkeit und Leistung von Linux IntelliSense).

Diese Funktion hängt davon ab, ob auf dem Linux-Computer Zip installiert ist. Sie können Zip mit diesem apt-get-Befehl installieren:

sudo apt install zip

Navigieren Sie, um Ihren Header-Cache zu verwalten, zu Tools > Optionen, Plattformübergreifend > Verbindungs-Manager > Remote Headers IntelliSense-Manager. Wählen Sie zum Aktualisieren des Header-Caches nach Änderungen auf dem Linux-Computer die Remoteverbindung aus, und klicken Sie dann auf Aktualisieren. Klicken Sie auf Löschen, um die Header zu entfernen, ohne die Verbindung selbst zu löschen. Klicken Sie auf Erkunden, um das lokale Verzeichnis im Datei-Explorer zu öffnen. Behandeln Sie diesen Ordner, als sei er nur-Lesen. Wählen Sie zum Herunterladen von Headern für eine vorhandene Verbindung, die vor Version 15.3 von Visual Studio 2017 erstellt wurde, die Verbindung aus, und klicken Sie dann auf Herunterladen.

Screenshot des Dialogfelds „Optionen“, in dem „plattformübergreifender >Verbindungs-Manager >Remote-Headers IntelliSense Manager“ ausgewählt ist.

Screenshot des Dialogfelds „Optionen“, in dem der „Plattformübergreifende Verbindungsmanager“ ausgewählt ist.

Sie können die Protokollierung aktivieren, um Probleme zu beheben:

Screenshot des Dialogfelds „Optionen“ mit Remote-Protokollierungsoptionen.

Linux-Zielgebietsschema

Visual Studio-Spracheinstellungen werden nicht an Linux-Ziele weitergegeben, da Visual Studio installierte Pakete nicht verwaltet oder konfiguriert. Nachrichten, die im Ausgabefenster angezeigt werden (z. B. Buildfehler), werden mit der Sprache und dem Gebietsschema des Linux-Ziels angezeigt. Sie müssen Ihre Linux-Systeme für die gewünschten Regionaleinstellungen konfigurieren.

Siehe auch

Festlegen der Compiler- und Buildeigenschaften
Allgemeine C++-Eigenschaften (Linux C++)
VC++-Verzeichnisse (Linux C++)
Kopieren von Quellprojekteigenschaften (Linux C++)
Eigenschaften von Build-Ereignissen (Linux C++)