4 Stimmen

Portierung von GNU C++-Programmen nach Visual C++

Wie portiert man C++-Programme mit Makefile aus GNU C++ unter Linux nach Visual C++?

0 Stimmen

Haben Sie cygwin und MinGW in Betracht gezogen?

3voto

greyfade Punkte 24134

Eine Sache, die ich vorschlagen kann, ist die Verwendung von CMake. Wenn Sie Ihr Build-System mit CMake implementieren, um die Makefiles für GCC unter Linux automatisch zu generieren, sind nur geringe Änderungen erforderlich, um Projekte und Lösungen für VC++ automatisch zu generieren.

Natürlich bedeutet dies, dass Sie ein völlig neues Build-Tool erlernen müssen, so dass es vielleicht nichts für Sie ist. Es ist nur ein Vorschlag.

2voto

Fabio Ceconello Punkte 15469

Ich weiß nicht, ob es eine einfache Möglichkeit gibt, von einer in eine andere umzuwandeln, aber

Wenn Sie nur ANSI C/C++-Funktionen verwenden, müssen Sie das Makefile in der Regel nicht konvertieren, sondern nur nachsehen, welche .c/.cpp-Dateien darin enthalten sind, und sie dem VS-Projekt hinzufügen; Sie müssen auch die Compiler-Optionen und definierten Makros überprüfen, um sie in das VS-Projekt einzufügen. Ich habe dies getan, um Libs wie expat, freetype, agg und andere zu kompilieren, ohne Probleme.

2voto

bk1e Punkte 23191

Portierung des Build-Systems: Sie könnten eine Windows-Portierung von GNU make verwenden und das Makefile so ändern, dass es die Visual C++-Befehlszeilenwerkzeuge aufruft ( cl.exe , link.exe , lib.exe usw.) bei der Erstellung unter Windows und die GNU-Compiler-Tools bei der Erstellung unter Linux. Die Schwierigkeit dieses Ansatzes hängt von der Komplexität der Makefiles ab.

Portierung des Codes: Dies hängt davon ab, welche APIs und Bibliotheken Sie verwenden und auf welche Compiler-Warnungen/Fehler/Störungen Sie stoßen werden. Für eine spezifischere Antwort, stellen Sie eine spezifischere Frage.

1voto

AHelps Punkte 1762

CMake wurde erwähnt. Ich habe CMake verwendet und das resultierende Visual Studio-Projekt erfolgreich kompiliert. Ich fand die CMake-Dokumentation sehr wenig hilfreich - ich mußte einen bestehenden Benutzer fragen - und das offizielle Handbuch (das Geld kostet) war zu der Zeit vergriffen. Außerdem war das erzeugte Visual-Studio-Projekt sehr starr nach der Vorlage formatiert, die von demjenigen bevorzugt wurde, der den Konverter geschrieben hatte. Ich konnte nicht herausfinden, wie ich die Projektoptionen anpassen oder Quelldateien gruppieren konnte.

Ich kompiliere regelmäßig mit Visual Studio und G++. In den meisten Fällen müssen Sie nur alle Quelldateien und Header-Dateien in ein Visual Studio-Projekt einfügen ("Add Existing Files", und fügen Sie Ihren gesamten Quellbaum hinzu) und dann kompilieren. In der Regel treten dabei Fehler auf, so dass Sie von dort aus mit der Fehlerkorrektur beginnen können. Wenn Sie plattformspezifische Bibliotheken verwendet haben, müssen Sie möglicherweise auf eine Alternative portieren oder Funktionen entfernen.

Ein weiteres Wort der Vorsicht: Visual Studio und G++ haben unterschiedliche Compiler-Macken. Im Großen und Ganzen halten sich beide hervorragend an den C++-Standard, aber leicht vom Standard abweichender Code, der in dem einen funktioniert, funktioniert möglicherweise nicht in dem anderen. Ich habe festgestellt, dass dies insbesondere beim Umgang mit Vorlagen der Fall ist, wobei Visual Studio in vielen Fällen Syntaxfehler auf bizarre Weise zulässt.

1voto

Germán Diago Punkte 7087

CMake hat die Annehmlichkeit, ein Visual Studio-Projekt zu erzeugen.

Wenn Sie nicht brauchen, dass, schlage ich vor, Meson Build-System. Viel schöner, ähnlicher Vorschlag. Erfordert python3 und ninja, aber niemand ist perfekt :)

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