Wie portiert man C++-Programme mit Makefile aus GNU C++ unter Linux nach Visual C++?
Antworten
Zu viele Anzeigen?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.
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.
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.
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.
0 Stimmen
Haben Sie cygwin und MinGW in Betracht gezogen?