Ich möchte meine C / C ++ - Apps auf OS X portieren.
Ich habe keinen Mac, aber Linux und Windows. Gibt es dafür ein Werkzeug?
Antworten:
Es scheint einige Skripte zu geben , die Ihnen beim Einrichten der Cross-Kompilierung für den Mac helfen sollen. Ich kann nicht sagen, wie gut sie sind oder wie gut sie auf Ihr Projekt zutreffen. In der Dokumentation beziehen sie sich auf diese Anweisungen zum Cross-Compilieren für 10.4 und auf diese zum Cross-Compilieren für 10.5. Diese Anweisungen können hilfreicher sein als das Skript, je nachdem, wie gut das Skript Ihren Anforderungen entspricht.
Wenn es sich bei Ihrem Programm um freie oder Open Source-Software handelt, möchten Sie möglicherweise stattdessen eine MacPorts- Portdatei erstellen (Dokumentation hier ) und Ihren Benutzern ermöglichen, Ihr Programm mit MacPorts zu erstellen. Dies ist im Allgemeinen die bevorzugte Methode, um tragbare kostenlose oder Open-Source-Software unter Mac OS X zu installieren. MacPorts wurde in der Vergangenheit unter Linux ausgeführt, sodass es möglicherweise möglich ist, Ihre Portdatei unter Linux zu entwickeln und zu testen (obwohl dies offensichtlich erforderlich ist) auf einem Mac getestet werden).
Für Linux gibt es einen vorgefertigten GCC-Cross-Compiler (aus öffentlich verfügbaren modifizierten GCC-Quellen von Apple).
https://launchpad.net/~flosoft/+archive/cross-apple
Update für 2015
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311
RadStudio von Embarcadero unterstützt auch das Erstellen von OSX / iOS / Android-Apps unter Windows.
Diese Antwort von Thomas bietet auch ein Cross-Compilation-Tool.
Für all diese Optionen benötigen Sie noch ein echtes Mac / i-Gerät, um die Anwendung zu testen.
Ich habe ein Projekt namens OSXCross erstellt, das auf OS X (10.4-10.9) unter Linux abzielt.
Derzeit werden clang
3.2 bis 3.8 (Trunk) unterstützt (Sie können Ihre Dists verwenden clang
).
Darüber hinaus können Sie auch eine aktuelle Vanille bauen GCC
(4.6+).
LTO funktioniert auch für beide clang
und GCC
.
Derzeit wird cctools-870 mit ld64-242 verwendet.
Wenn Sie versuchen, etwas auf mehreren Plattformen zum Laufen zu bringen, müssen Sie unbedingt auf der vorgesehenen Plattform kompilieren / ausführen / integrieren / testen. Sie können nicht einfach auf einer Plattform kompilieren / ausführen und dann sagen "Oh, es sollte auf der anderen Plattform genauso funktionieren".
Selbst mit einer wirklich guten plattformübergreifenden Sprache wie Java werden Sie auf Probleme stoßen, bei denen es auf der anderen Plattform nicht genau gleich funktioniert.
Der einzige Weg, den ich gefunden habe, der meine Zeit / Produktivität / Fähigkeit zur schnellen Iteration auf mehreren Plattformen berücksichtigt, ist die Verwendung einer VM der anderen Plattformen.
Es gibt andere Lösungen wie Dual-Boot und solche, die ich nicht erwähnt habe, aber ich finde, dass sie meine Produktivität / Zeit nicht respektieren.
Nehmen Sie als Beispiel das Dual-Booten:
BAM dort geht 30 Minuten meiner Zeit und ich habe nichts Produktives getan .
Sie würden eine Toolchain benötigen, um die Kompilierung für mach-o zu überqueren, aber selbst wenn Sie diese hätten, hätten Sie nicht die Apple-Bibliotheken, mit denen Sie entwickeln könnten. Ich bin mir leider nicht sicher, wie Sie ohne sie portieren könnten.
Die Entwicklung von Apple ist ein seltsames Tier für sich. OS X verwendet einen GCC-Port mit einigen Änderungen, um ihn "appley" zu machen. Theoretisch ist es möglich, die Quellen für das Apple GCC und die Toolchain sowie die Apple-Kernel- und Bibliotheksheader zu verwenden und einen Cross-Compiler auf Ihrem Windows-Computer zu erstellen.
Warum du diesen Weg gehen willst, ist mir ein Rätsel. Sie können einen billigen Mac mini ab 600 US-Dollar haben. Die Zeit, die Sie investieren, um einen Cross-Compiler zum Laufen zu bringen (insbesondere mit einem Windows-Host für Unix-Tools), wird wahrscheinlich sowieso mehr als 600 US-Dollar kosten.
Wenn Sie wirklich daran interessiert sind, Ihre App plattformübergreifend zu gestalten, schauen Sie sich Qt, wxWidgets oder FLTK an. Alle bieten plattformübergreifende Unterstützung mit minimalen Änderungen am Basiscode. Zumindest müssen Sie auf diese Weise nur einen Mac finden, auf dem Sie Ihre App kompilieren können. Dies ist nicht allzu schwierig, wenn Sie technisch versierte Freunde haben, denen es nichts ausmacht, Ihnen SSH-Zugriff auf ihren Mac zu gewähren.
Sie werden auf jeden Fall irgendwie OS X brauchen. Auch wenn Sie keinen Mac besitzen, können Sie einige Alternativen ausprobieren .
Ich habe diese kleine Dokumentation im Internet gefunden: http://devs.openttd.org/~truebrain/compile-farm/apple-darwin9.txt
Dies beschreibt genau, was Sie wollen. Ich interessiere mich selbst dafür, habe es aber noch nicht getestet (vor 10 Minuten gefunden). Die Dokumentation scheint jedoch gut zu sein.
Sie können einen Mac in der Cloud mieten von dieser Website. Sie können sie ab 1 US-Dollar mieten, was ausreichen sollte (es sei denn, Sie benötigen Root-Zugriff, dann sehen Sie sich 49 US-Dollar + an).
Es gibt einige Cross-Compiler-Setups, aber fast alle sind für das verteilte Kompilieren im distcc-Stil gedacht. Meines Wissens gibt es keine Möglichkeit, direkt auf die Mac-Plattform zuzugreifen, ohne tatsächlich einen Mac zu haben. Der nächste, den Sie erreichen können, ohne auf QT oder wxWidgets zurückzugreifen, ist OpenStep mit GNUStep oder ähnlichem, aber das ist keine echte Cocoa-Plattform, nur sehr nahe.
Die kurze Antwort ist irgendwie. Sie müssen eine plattformübergreifende Bibliothek wie QT verwenden . Es gibt IDEs wie QT Creator, mit denen Sie auf einem Betriebssystem entwickeln und Makefiles für andere generieren können. Weitere Informationen zur plattformübergreifenden Entwicklung finden Sie in den plattformübergreifenden Episoden dieses Podcasts (beachten Sie, dass die Serie noch nicht beendet ist und wöchentlich neue Episoden erscheinen).
Wie andere Antworten erklären, können Sie wahrscheinlich für einen Mac unter Windows oder Linux kompilieren, aber Sie können Ihre Anwendungen nicht testen. Daher sollten Sie wahrscheinlich die 600 US-Dollar für einen Mac ausgeben, wenn Sie professionell programmieren oder arbeiten Finden Sie in Open-Source-Software einen Entwickler mit einem Mac, der Ihnen hilft.