Frage

Für ein kommendes Projekt gibt es Pläne, in dem Hafen des vorhandenen C ++ Code, der auf Windows und Linux auf die MacOS (Leopard) kompiliert. Die Software ist Kommandozeilen-Anwendung, sondern ein GUI-Frontend geplant werden könnte. Die MacOS verwendet die g ++ Compiler. Durch die mit dem gleichen Compiler wie Linux, scheint es nicht wie gäbe es irgendwelche Probleme geben, aber es gibt immer.

Gibt es Empfehlungen oder Probleme während des Hafens zu beachten?

War es hilfreich?

Lösung

Hat Ihre Anwendung eine GUI haben, und welche (nativ / Qt / Gtk +)?

Wenn nicht, die Probleme zu achten (im Vergleich zu Linux) sind vor allem in dem dynamischen Verknüpfungsbereich. OS X verwendet ‚-dylib‘ und ‚-bundle‘ und in der Tat hat zwei Arten von dynamischen Bibliotheken (Laufzeit ladbare und die normalen). Linux hat nur eine Art (-shared) und ist auf diesem lockeren sowieso.

Wenn Ihre Anwendung eine GUI hat, müssen Sie das Ganze in Cocoa neu zu kodieren, Objective-C verwendet wird. Das heißt, Sie in eine neue sein wird Sprache auch. Einige Leute (wie MS) verwendet Kohlenstoff (C ++ API), aber es läuft aus. Ich würde das für neue Projekte nicht empfehlen.

Ihr bestes Glück ist Qt oder GTK + verwendet wird. Eine native GTK + Port wurde (re) gab einige Tage gerade vor (siehe Imendio ).

P. S. OS X tut natürlich Lauf X11 Binärdateien, auch, aber das zu einem Ihrer Kunden drängen könnte ein harter Weg sein. Sie sind zu Aqua-Schnittstelle verwendet, und produktiv mit diesem. Betrachten X11 nur eine sehr kurzfristige Lösung.

p.p.s. Die Zahl der Open-Source-Add-on-Libs mit OS X kommt darauf beschränkt, und ihre Versionen könnten hinter fehlen. Während in Linux können Sie problemlos Benutzer benötigen ‚libxxx v.y.y‘ installiert haben, in OS X gibt es mehrere Ansätze Verpackung (fink, Macports) und für ein kommerzielles Werkzeug die benötigten Bibliotheken zu erwarten sind in der Anwendung enthalten sein. OS X bietet ‚Anwendungspakete‘ und ‚Rahmen‘ für diese (lokale Kopien, so dass die Anwendung autarke). Linux hat nicht ein solches Konzept. Dies wird auch einen großen Einfluss auf Ihrem Build-System hat; Vielleicht möchten Sie etwas wie SCons für alle Plattformen versuchen?

Andere Tipps

Sie müssen nicht neu zu kodieren alles in Objective-C. Es ist eine seltsame bastardization von C ++ und Objective-C, das Sie erlauben C ++ Code aus Objective-C zu verwenden, so könnte man den Modellcode in C ++ und Ansicht / Controller-Code in Objective-C intelligent aufgeteilt. Um Objective-C zu verwenden, nur Suffix Ihre Quellcodedateien mit .mm statt .m, und Sie können die meisten Rechts C ++ intermix und Objective-C Syntax sogar auf der gleichen Linie.

Wir haben nicht auf MacOS worden Portierung, sondern auf verschiedene Unix-Varianten von Linux Portierung wurden, der Hauptarbeitsbereich die Anlage war und Startsysteme, so erwarten es die meiste Arbeit zu setzen (bei Ihrem bestehenden bereits portabel zwischen Linux und Windows).

Macintosh (Mac OS X) ist im Wesentlichen FreeBSD unter der Haube (obwohl es gezwickt wurde). Es gibt einige Unterschiede in Systemprogrammierung zwischen Linux und FreeBSD. In erster Linie gibt es diese Unterschiede zwischen den verschiedenen Systemaufrufe ... so, wie viel dies bei Ihnen wirkt dadurch bestimmt wird, was Ihre Anwendung tut und welche Art von OS-System ruft Sie während der Ausführung machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top