40 Stimmen

Wie erstellt man ein Visual C++-Projekt für Linux?

Was ist der beste und einfachste Weg, (für Linux) eine C++ Anwendung zu erstellen, die in Visual Studio geschrieben wurde? Der Code selbst ist bereit - ich habe nur plattformübergreifende Bibliotheken verwendet.

Ist es möglich, alles unter Windows in Visual Studio vorzubereiten und es dann mit einem CLI-Tool unter Linux zu erstellen? Gibt es dazu irgendwelche Dokumente?

BEARBEITEN: Weitere Informationen:

  • Verwendete Bibliotheken: stl, wxwidgets, boost, asio, cryptlib.

  • Sehr wenig Linux-Know-how.

BEARBEITEN#2: Ich habe folgende Lösung gewählt: Neues Projekt mit kdevelop erstellen und dort alles kompilieren.

19voto

OregonGhost Punkte 22841

Wir verwenden CMake für Linux-Projekte. CMake kann KDevelop- und Visual Studio-Projektdateien generieren, sodass Sie einfach Ihre CMake-Datei als Ursprung der plattformspezifischen IDE-Dateien erstellen können. Der KDevelop-Generator ist in Ordnung, sodass Sie in KDevelop bearbeiten und kompilieren können (was wiederum Make aufruft).

Andererseits können Sie, wenn Sie nichts Besonderes haben, CMake oder einfach nur Make verwenden, um das Ding auf Linux zu bauen, wenn Sie bei Ihrer Lösungsdatei bleiben möchten (was ich derzeit für eine Bibliothek mit Testanwendungen mache). Dieser Ansatz wird kompliziert, wenn Ihr Build-Prozess mehr ist als nur "werfen Sie diese Dateien dem Compiler zu und schauen wir mal, was passiert", daher ist die CMake-Lösung meiner Meinung nach eine gute Sache für die plattformübergreifende Entwicklung.

0 Stimmen

Ich möchte es gerne so haben, dass ich die vorhandenen VisualStudio-Einstellungen verwenden und als Makefile speichern kann? und es unter Linux verwenden kann. Ist das möglich? /mspoerr

2 Stimmen

Visual C++, zumindest vor einiger Zeit, unterstützte das Exportieren eines Projekts/Lösung in eine Makefile. Sie können es ausprobieren, aber die resultierende Makefile ist (oder war damals) ein ziemliches Durcheinander. Sie könnten auch versuchen, eine XSLT zu erstellen, um die Projektdatei (nicht die Lösung) in alles zu transformieren, was Sie möchten, einschließlich einer Makefile- oder CMake-Datei.

8voto

Rich Turner Punkte 10400

8 Jahre später ...

Ich bin heute über diese Frage gestolpert und dachte, du möchtest vielleicht einen Blick auf Visual C++ für Linux werfen.

Im März 2016 veröffentlicht, ermöglicht VC++ für Linux die Erstellung eines Projekts in VC++ und das anschließende Builden auf einer Linux-Maschine/VM unter Verwendung nativer Linux-Tools. Darüber hinaus kannst du auch debuggen deine App von innerhalb von VS aus, da die Linux-Tools dem VS-Debugger ermöglichen, GDB in deiner Linux-Maschine/VM über SSH zu steuern!!

Sieht so aus, als wäre das genau das, was @mspoerr wollte :)

7voto

pts Punkte 70857

Hier ist, wie man C-Code manuell unter Linux ohne zusätzliche Build-Tools kompiliert:

gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2

Wenn Ihr Projekt jedoch größer ist als ein paar Dateien, möchten Sie stattdessen ein Build-Tool verwenden (wie z.B. CMake, siehe Antwort von OregonGhost), um die Kompilierung vieler Dateien zu automatisieren und inkrementell zu gestalten. Wenn Sie ein Build-Tool verwenden, wird es gcc im Hintergrund ausführen, mit ähnlichen Argumenten wie oben. Es ist nützlich, die oben genannten Argumente zu verstehen, damit Sie Probleme beheben können, wenn Ihr automatisierter Build fehlschlägt.

Dies kompiliert code1.c und code2.c zu einem ausführbaren Binärprogramm prog, lädt .h-Dateien von ., includedir1 und includedir2 und lädt Bibliotheken (z.B. libuse1.so* und libuse2.so*) aus den Verzeichnissen libdir1 und libdir2, wobei die Bibliotheken use1 (entsprechend dem Dateinamen libuse1.so*) und use2 verwendet werden.

Wenn Sie undefinierte Symbolfehler in Ihren .c-Dateien erhalten, müssen Sie mehr -I-Flags angeben. Wenn Sie undefinierte Symbolfehler in der .o-Datei erhalten, müssen Sie mehr -l-Flags angeben. Wenn Sie kann -l... nicht finden-Fehler erhalten, müssen Sie mehr -L-Flags angeben.

6 Stimmen

Ich gehe davon aus, dass er mehr als eine Datei hat. Kompilieren ohne Makefiles ist albern.

1 Stimmen

@Zifre: Ich habe meine Antwort aktualisiert und empfehle ein Build-Tool. Ich glaube, meine Antwort war und ist aufschlussreich und nützlich für die Problembehebung, auch wenn ein Build-Tool verwendet wird.

4voto

dirkgently Punkte 104289

Was ist der beste und einfachste Weg, um eine C++-Anwendung zu erstellen, die mit Visual Studio für Linux geschrieben wurde? Der Code selbst ist bereit - ich habe nur plattformübergreifende Bibliotheken verwendet.

  • Überprüfen, ob etwas nicht Teil von Standard C++ ist
  • Wiederholen, falls nötig
  • Erstellen Sie ein Makefile oder ein KDevelop-Projekt

Et voilà!

1 Stimmen

Kann dieses Makefile aus VisualStudio generiert werden? Welche Änderungen sind erforderlich, um es unter Linux zum Laufen zu bringen? /mspoerr

2 Stimmen

Einige Versionen von VS können Makefiles für nmake generieren - ein auf der Windows CLI basierendes Build-System. Das Make, das Sie in *nix-Systemen finden, ist etwas anders. Sie müssen die Unterschiede herausfiltern. Meiner Meinung nach ist es einfacher, ENTWEDER 1) Code::Blocks (oder eine plattformübergreifende IDE) und gcc auf Ihrem Windows zu verwenden, um ein Build-System zu erstellen, und es dann auf Linux zu verwenden ODER 2) KDevelop zu verwenden, das ähnlich wie VS aussieht, um Quelldateien/Bibliotheken usw. hinzuzufügen und ein Autoconf-basiertes Build-System für Sie zu erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X