Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Entwicklung von Visual Studio C und C++ ist nicht mehr nur für Windows vorgesehen. In diesem Lernprogramm wird gezeigt, wie Sie die plattformübergreifende Entwicklung von Visual Studio für C++ unter Windows und Linux verwenden. Sie basiert auf CMake, sodass Sie keine Visual Studio-Projekte erstellen oder generieren müssen. Wenn Sie einen Ordner öffnen, der eine CMakeLists.txt Datei enthält, konfiguriert Visual Studio die IntelliSense- und Buildeinstellungen automatisch. Sie können schnell mit dem Bearbeiten, Erstellen und Debuggen ihres Codes lokal unter Windows beginnen. Wechseln Sie dann in Visual Studio zur gleichen Konfiguration, um dasselbe unter Linux zu tun.
In diesem Tutorial lernen Sie Folgendes:
- Klonen eines Open-Source-CMake-Projekts von GitHub
- Öffnen des Projekts in Visual Studio
- Erstellen und Debuggen eines ausführbaren Ziels unter Windows
- Hinzufügen einer Verbindung zu einem Linux-Computer
- Erstellen und Debuggen desselben Ziels unter Linux
Voraussetzungen
Einrichten von Visual Studio für die plattformübergreifende C++-Entwicklung
- Installieren Sie zunächst Visual Studio, und wählen Sie die Desktopentwicklung mit C++- und Linux-Entwicklungsumgebungen mit C++-Workloads aus. Diese minimale Installation beträgt nur 3 GB. Je nach Downloadgeschwindigkeit sollte die Installation nicht mehr als 10 Minuten dauern.
Einrichten eines Linux-Computers für die plattformübergreifende C++-Entwicklung
Visual Studio erfordert keine bestimmte Verteilung von Linux. Das Betriebssystem kann auf einem physischen Computer, in einer VM oder in der Cloud ausgeführt werden. Sie können auch das Windows-Subsystem für Linux (WSL) verwenden. Für dieses Lernprogramm ist jedoch eine grafische Umgebung erforderlich. WSL wird hier nicht empfohlen, da sie hauptsächlich für Befehlszeilenvorgänge vorgesehen ist.
Visual Studio erfordert diese Tools auf dem Linux-Computer: C++-Compiler,
gdb
, ,ssh
,rsync
,make
undzip
. Auf Debian-basierten Systemen können Sie diesen Befehl verwenden, um diese Abhängigkeiten zu installieren:sudo apt install -y openssh-server build-essential gdb rsync make zip
Visual Studio erfordert eine aktuelle Version von CMake auf dem Linux-Computer mit aktiviertem Servermodus (mindestens 3.8). Microsoft produziert einen universellen Build von CMake, den Sie auf jeder Linux-Distribution installieren können. Es wird empfohlen, diesen Build zu verwenden, um sicherzustellen, dass Sie über die neuesten Features verfügen. Sie können die CMake-Binärdateien aus dem Microsoft-Fork des CMake-Repos auf GitHub abrufen. Wechseln Sie zu dieser Seite, und laden Sie die Version herunter, die der Systemarchitektur auf Ihrem Linux-Computer entspricht, und markieren Sie sie dann als ausführbare Datei:
wget <path to binary> chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
Sie sehen die Optionen zum Ausführen des Skripts mit
--help
. Es wird empfohlen, die Option zum Angeben der-prefix
Installation im Pfad "/usr " zu verwenden, da "/usr/bin " der Standardspeicherort ist, an dem Visual Studio nach CMake sucht. Das folgende Beispiel zeigt das Linux-x86_64-Skript. Ändern Sie sie nach Bedarf, wenn Sie eine andere Zielplattform verwenden.sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
Auf Ihrem Windows-Computer muss Git für Windows installiert sein.
Ein GitHub-Konto.
Klonen eines Open-Source-CMake-Projekts von GitHub
In diesem Lernprogramm wird das Bullet Physics SDK auf GitHub verwendet. Es bietet Kollisionserkennung und Physiksimulationen für viele Anwendungen. Das SDK enthält Beispiel-ausführbare Programme, die kompiliert und ausgeführt werden, ohne anderen Code schreiben zu müssen. In diesem Lernprogramm werden keine Quellcode- oder Buildskripts geändert. Klonen Sie zunächst das Repository bullet3 von GitHub auf den Computer, auf dem Visual Studio installiert ist.
git clone https://github.com/bulletphysics/bullet3.git
Wählen Sie im Hauptmenü von Visual Studio die Option Datei > Öffnen > CMake. Navigieren Sie zu der
CMakeLists.txt
-Datei im Stamm des von Ihnen heruntergeladenen bullet3-Repos.Sobald Sie den Ordner öffnen, wird die Ordnerstruktur im Projektmappen-Explorer angezeigt.
Diese Ansicht zeigt Ihnen genau, was sich auf dem Datenträger befindet, keine logische oder gefilterte Ansicht. Standardmäßig werden keine ausgeblendeten Dateien angezeigt.
Wählen Sie die Schaltfläche " Alle Dateien anzeigen " aus, um alle Dateien im Ordner anzuzeigen.
Wechseln zur Zielansicht
Wenn Sie einen Ordner öffnen, der CMake verwendet, generiert Visual Studio automatisch den CMake-Cache. Dieser Vorgang kann je nach Größe des Projekts einige Minuten dauern.
Wählen Sie im Ausgabefenster die Option "Ausgabe anzeigen" aus , und wählen Sie dann "CMake " aus, um den Status des Cachegenerierungsprozesses zu überwachen. Wenn der Vorgang abgeschlossen ist, lautet die Meldung "Zielinformationenextraktion abgeschlossen".
Nach Abschluss dieses Vorgangs ist IntelliSense konfiguriert. Sie können das Projekt erstellen und die Anwendung debuggen. Visual Studio zeigt nun eine logische Ansicht der Lösung basierend auf den in den CMakeLists-Dateien angegebenen Zielen an.
Verwenden Sie die Schaltfläche "Lösungen und Ordner " im Projektmappen-Explorer , um zur Ansicht "CMake-Ziele" zu wechseln.
So sieht diese Ansicht für das Bullet SDK aus:
Mit der Zielansicht erhalten Sie eine intuitivere Ansicht der Inhalte einer Quellbasis. Sie können sehen, dass einige Ziele Bibliotheken sind und andere ausführbare Dateien sind.
Erweitern Sie einen Knoten in der CMake-Zielansicht (Targets-View), um die Quellcodedateien anzuzeigen, unabhängig vom Speicherort auf dem Datenträger.
Hinzufügen einer expliziten Windows x64-Debug-Konfiguration
Visual Studio erstellt eine x64-Debug-Standardkonfiguration für Windows. Konfigurationen sind, wie Visual Studio versteht, welches Plattformziel es für CMake verwenden wird. Die Standardkonfiguration wird auf dem Datenträger nicht dargestellt. Wenn Sie eine Konfiguration explizit hinzufügen, erstellt Visual Studio eine Datei namensCMakeSettings.json. Es wird mit Den Einstellungen für alle von Ihnen angegebenen Konfigurationen aufgefüllt.
Fügen Sie eine neue Konfiguration hinzu. Öffnen Sie die Dropdownliste "Konfiguration " in der Symbolleiste, und wählen Sie " Konfigurationen verwalten" aus.
Der CMake-Einstellungs-Editor wird geöffnet. Wählen Sie auf der linken Seite des Editors das grüne Pluszeichen aus, um eine neue Konfiguration hinzuzufügen. Das Dialogfeld "Konfiguration zu CMakeSettings hinzufügen " wird angezeigt:
In diesem Dialogfeld werden alle Konfigurationen angezeigt, die in Visual Studio enthalten sind, sowie alle benutzerdefinierten Konfigurationen, die Sie erstellen. Wenn Sie weiterhin eine x64-Debug-Konfiguration verwenden möchten, sollte dies der erste sein, den Sie hinzufügen. Wählen Sie "x64-Debuggen" und dann die Schaltfläche " Auswählen " aus. Visual Studio erstellt die CMakeSettings.json Datei mit einer Konfiguration für x64-Debug und speichert sie auf dem Datenträger. Sie können beliebige Namen für Ihre Konfigurationen verwenden, indem Sie den Namensparameter direkt in CMakeSettings.jsonändern.
Festlegen eines Breakpoints, Erstellen und Ausführen unter Windows
In diesem Schritt debuggen wir ein Beispielprogramm, das die Bullet Physics-Bibliothek demonstriert.
Wählen Sie „AppBasicExampleGui“ im Projektmappen-Explorer, und erweitern Sie es.
Öffnen Sie die Datei
BasicExample.cpp
.Legen Sie einen Breakpoint fest, der erreicht werden soll, wenn Sie in der ausgeführten Anwendung klicken. Das Click-Ereignis wird in einer Methode innerhalb einer Hilfsklasse behandelt. So gelangen Sie schnell dorthin:
Wählen Sie
CommonRigidBodyBase
aus, von dem die StrukturBasicExample
abgeleitet ist. Es liegt um Zeile 30.Klicken Sie mit der rechten Maustaste, und wählen Sie "Gehe zu Definition" aus. Jetzt befinden Sie sich im Header "CommonRigidBodyBase.h".
In der Browseransicht oberhalb Ihrer Quelle sollten Sie sehen, dass Sie sich in der
CommonRigidBodyBase
Datei befinden. Rechts können Sie Mitglieder auswählen, die überprüft werden sollen. Öffnen Sie die Dropdownliste, und wählen Sie ausmouseButtonCallback
, um zur Definition dieser Funktion in der Kopfzeile zu wechseln.
Setzen Sie in der ersten Zeile dieser Funktion einen Breakpoint. Es wird ausgelöst, wenn Sie in das Fenster der Anwendung klicken, während sie im Visual Studio-Debugger ausgeführt wird.
Klicken Sie auf das Startdropdownmenü in der Symbolleiste, um die Anwendung zu starten. Es ist das Symbol mit dem grünen Wiedergabesymbol, das "Startelement auswählen" besagt. Wählen Sie in der Dropdownliste AppBasicExampleGui.exeaus. Der name der ausführbaren Datei wird jetzt auf der Startschaltfläche angezeigt:
Wählen Sie die Startschaltfläche aus, um die Anwendung und die erforderlichen Abhängigkeiten zu erstellen, und starten Sie sie dann mit dem angefügten Visual Studio-Debugger. Nach ein paar Momenten wird die ausgeführte Anwendung angezeigt:
Bewegen Sie den Mauszeiger in das Anwendungsfenster, und drücken Sie anschließend eine Taste, um den Breakpoint auszulösen. Durch den Breakpoint wird Visual Studio wieder im Vordergrund angezeigt, und der Editor zeigt die Zeile an, in der die Ausführung pausiert wurde. Sie können die Anwendungsvariablen, Objekte, Threads und Arbeitsspeicher überprüfen oder den Code interaktiv durchlaufen. Wählen Sie "Weiter" , damit die Anwendung fortgesetzt werden kann, und beenden Sie sie dann normal. Oder beenden Sie die Ausführung in Visual Studio mithilfe der Schaltfläche "Beenden".
Hinzufügen einer Linux-Konfiguration und Herstellen einer Verbindung mit dem Remotecomputer
Fügen Sie eine Linux-Konfiguration hinzu. Klicken Sie in der Projektmappen-Explorer-Ansicht mit der rechten Maustaste auf die CMakeSettings.json Datei, und wählen Sie "Konfiguration hinzufügen" aus. Das gleiche Dialogfeld "Konfiguration zu CMakeSettings hinzufügen" wird wie zuvor angezeigt. Wählen Sie dieses Mal Linux-Debug aus, und speichern Sie dann die CMakeSettings.json Datei (STRG+S).
Visual Studio 2019, Version 16.6 oder höher Scrollen Sie nach unten zum unteren Rand des CMake-Einstellungs-Editors, und wählen Sie "Erweiterte Einstellungen anzeigen" aus. Wählen Sie Unix Makefiles als CMake-Generator aus, und speichern Sie dann die CMakeSettings.json Datei (STRG+s).
Wählen Sie "Linux-Debug " in der Konfigurations-Dropdownliste aus.
Wenn Sie zum ersten Mal eine Verbindung mit einem Linux-System herstellen, wird das Dialogfeld " Mit Remotesystem verbinden" angezeigt.
Das Dialogfeld enthält Felder für den Hostnamen, den Port, den Benutzernamen, den Authentifizierungstyp und das Kennwort. Alle Felder sind leer, außer Port ist auf 22 festgelegt, und der Authentifizierungstyp ist auf "Kennwort" festgelegt.
Wenn Sie bereits eine Remoteverbindung hinzugefügt haben, können Sie dieses Fenster öffnen, indem Sie zu Tools Options >> Cross Platform > Connection Manager navigieren.
Geben Sie die Verbindungsinformationen an Ihren Linux-Computer an , und wählen Sie "Verbinden" aus. Visual Studio fügt diesen Computer in „CMakeSettings.json“ als Standardverbindung für Linux-Debug hinzu. Außerdem werden die Header von Ihrem Remotecomputer abgerufen, damit Sie spezifische IntelliSense-Funktionen für diese Remoteverbindung verwenden können. Als Nächstes sendet Visual Studio Ihre Dateien an den Remotecomputer und generiert den CMake-Cache auf dem Remotesystem. Diese Schritte können je nach Geschwindigkeit Ihres Netzwerks und der Leistung Ihres Remotecomputers einige Zeit in Anspruch nehmen. Sie wissen, dass die Meldung "Zielinformationenextraktion abgeschlossen" im CMake-Ausgabefenster angezeigt wird.
Festlegen eines Breakpoints, Erstellen und Ausführen unter Linux
Da es sich um eine Desktopanwendung ist, müssen Sie der Debugkonfiguration einige weitere Konfigurationsinformationen bereitstellen.
Klicken Sie in der CMake-Zielansicht mit der rechten Maustaste auf „AppBasicExampleGui“, und wählen Sie Einstellungen für Debuggen und Starten aus, um die Datei „launch.vs.json“ zu öffnen, die sich im versteckten .vs-Unterordner befindet. Diese Datei ist lokal in Ihrer Entwicklungsumgebung. Sie können sie zum Stamm Ihres Projekts verschieben, wenn Sie sie bei Ihrem Team einchecken und speichern möchten. In dieser Datei wurde eine Konfiguration für AppBasicExampleGui hinzugefügt. Diese Standardeinstellungen funktionieren in den meisten Fällen, aber nicht hier. Da es sich um eine Desktopanwendung handelt, müssen Sie zusätzliche Informationen bereitstellen, um das Programm zu starten, damit Sie es auf Ihrem Linux-Computer sehen können.
Führen Sie den folgenden Befehl aus, um den Wert der Umgebungsvariable
DISPLAY
auf Ihrem Linux-Computer zu ermitteln:echo $DISPLAY
In der Konfiguration für AppBasicExampleGui gibt es ein Parameterarray "pipeArgs". Sie enthält eine Zeile: "${debuggerCommand}". Es ist der Befehl, der
gdb
auf dem Remotecomputer startet. Visual Studio muss die Anzeige in diesen Kontext exportieren, bevor dieser Befehl ausgeführt wird. Wenn beispielsweise der Wert der Anzeige lautet:1
, ändern Sie diese Zeile wie folgt:"export DISPLAY=:1;${debuggerCommand}",
Starten sie ihre Anwendung, und debuggen Sie sie. Öffnen Sie die Dropdownliste "Startelement auswählen " in der Symbolleiste, und wählen Sie "AppBasicExampleGui" aus. Wählen Sie als Nächstes entweder das grüne Wiedergabesymbol in der Symbolleiste aus, oder drücken Sie F5. Die Anwendung und ihre Abhängigkeiten basieren auf dem Remote-Linux-Computer und werden dann mit dem angefügten Visual Studio-Debugger gestartet. Auf Ihrem Remote-Linux-Computer sollte ein Anwendungsfenster angezeigt werden.
Bewegen Sie die Maus in das Anwendungsfenster, und klicken Sie auf eine Schaltfläche. Daraufhin wird der Breakpoint erreicht. Die Ausführung des Programms wird am Breakpoint angehalten, und Visual Studio wird wieder im Vordergrund angezeigt. Außerdem sollte in Visual Studio ein Linux-Konsolenfenster angezeigt werden. Das Fenster zeigt eine Ausgabe vom Remote-Linux-Computer und kann auch Eingaben für
stdin
akzeptieren. Wie jedes Visual Studio-Fenster können Sie es an eine bevorzugte Position andocken, an der es angezeigt werden soll. Die Position des Fensters wird in zukünftigen Sitzungen beibehalten.Die Ausgabe im Fenster gibt an, dass die mit dlopen/dlsym dynamisch geladenen C11-Funktionen OK sind, ein GL 3.0-Kontext erstellt und der Direct-GLX-Rendering-Kontext abgerufen und aktuell gemacht wurde. Das Fenster enthält verschiedene Versionsinformationen für GL_VENDOR, GL_VERSION, GL_SHADING_LANGUAGE_VERSION usw.
Sie können die Anwendungsvariablen, Objekte, Threads und den Arbeitsspeicher inspizieren und Ihren Code interaktiv mit Visual Studio durchlaufen. Dieses Mal tun Sie es jedoch auf einem Remote-Linux-Computer anstelle Ihrer lokalen Windows-Umgebung. Sie können "Weiter" auswählen, damit die Anwendung normal fortgesetzt und beendet wird, oder Sie können die Stoppschaltfläche wie bei der lokalen Ausführung auswählen.
Sehen Sie sich das Fenster "Aufrufstapel" an und betrachten Sie die Aufrufe an
x11OpenGLWindow
, seitdem die Anwendung unter Linux von Visual Studio gestartet wurde.Der Anrufstapel zeigt den Haltepunkt auf CommonRigidBodyBase::mouseMoveCallback und die Aufrufe, die ihm vorausgehen, wie OnMouseMove, X11OpenGLWindow:: pumpMessage und so weiter.
Was Sie gelernt haben
In diesem Lernprogramm haben Sie eine Codebasis direkt von GitHub geklont. Sie haben sie ohne Änderungen auf Windows erstellt, ausgeführt und gedebuggt. Anschließend haben Sie dieselbe Codebasis mit geringfügigen Konfigurationsänderungen zum Erstellen, Ausführen und Debuggen auf einem Remote-Linux-Computer verwendet.
Nächste Schritte
Weitere Informationen zum Konfigurieren und Debuggen von CMake-Projekten in Visual Studio:
CMake-Projekte in Visual Studio
Konfigurieren eines Linux CMake-Projekts
Herstellen einer Verbindung mit Ihrem Linux-Remotecomputer
Anpassen von CMake-Buildeinstellungen
Konfigurieren von CMake-Debugsitzungen
Bereitstellen, Ausführen und Debuggen Ihres Linux-Projekts
CMake vordefinierte Konfigurationsreferenz vcpkgin CMake-ProjektenInstallieren und Verwenden von Paketen mit CMake in Visual Studio