Je voudrais porter mes applications C/C++ sur OS X.
Je n'ai pas de Mac, mais j'ai Linux et Windows. Existe-t-il un outil pour cela?
Il semble y avoir certains scripts qui ont été écrits pour vous aider à configurer la compilation croisée pour Mac; Je ne peux pas dire à quel point elles sont bonnes, ni à quel point elles s'appliquent à votre projet. Dans la documentation, ils se réfèrent à ces instructions pour la compilation croisée pour 10.4, et ceux-ci pour la compilation croisée pour 10.5; ces instructions peuvent être plus utiles que le script, selon la façon dont le script correspond à vos besoins.
Si votre programme est un logiciel libre ou open source, vous souhaiterez peut-être plutôt créer un MacPorts portfile (documentation ici ), et permettre à vos utilisateurs de construire votre programme en utilisant MacPorts; c'est généralement le moyen préféré d'installer un logiciel portable gratuit ou open source sur Mac OS X. MacPorts est connu pour fonctionner sous Linux dans le passé, il peut donc être possible de développer et de tester votre Portfile sur Linux (bien qu'il ait évidemment besoin à tester sur Mac).
Pour Linux, il existe un compilateur croisé GCC pré-construit (à partir des sources GCC modifiées d'Apple disponibles au public).
https://launchpad.net/~flosoft/+archive/cross-Apple
Mise à jour pour 2015
http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311
RadStudio d'Embarcadero prend également en charge la création d'applications OSX/iOS/Android sur Windows.
Cette réponse par Thomas fournit également un outil de compilation croisée.
Pour toutes ces options, vous avez toujours besoin d'un véritable appareil mac/i pour tester l'application.
J'ai créé un projet appelé OSXCross qui vise à cibler OS X (10.4-10.9) à partir de Linux.
Il prend actuellement en charge clang
3.2 jusqu'à 3.8 (trunk) (vous pouvez utiliser le clang
de votre dist).
De plus, vous pouvez également créer une Vanilla GCC
à jour (4.6+).
Le LTO fonctionne également pour les deux clang
et GCC
.
Utilise actuellement cctools-870 avec ld64-242.
Lorsque vous essayez de faire fonctionner quelque chose sur plusieurs plates-formes, vous devez absolument compiler/exécuter/intégrer/tester sur la plate-forme prévue. Vous ne pouvez pas simplement compiler/exécuter sur une plate-forme et dire ensuite "oh cela devrait fonctionner de la même manière sur l'autre plate-forme".
Même avec un très bon langage multiplateforme comme Java vous rencontrerez des problèmes où il ne fonctionnera pas exactement de la même manière sur l'autre plate-forme.
La seule façon dont j'ai trouvé qui respecte mon temps/productivité/capacité à itérer rapidement sur plusieurs plates-formes est d'utiliser un VM des autres plates-formes).
Il existe d'autres solutions comme le dual-boot et celles que je n'ai pas mentionnées mais je trouve qu'elles ne respectent pas ma productivité/temps.
Prenons l'exemple du double démarrage:
[~ # ~] bam [~ # ~] il me reste 30 minutes et je n'ai pas fait rien productif.
Vous aurez certainement besoin d'OS X d'une manière ou d'une autre. Même si vous ne possédez pas de Mac, vous pouvez toujours essayer --- alternatives .
Vous auriez besoin d'une chaîne d'outils pour effectuer une compilation croisée pour mach-o, mais même si vous l'aviez, vous n'aurez pas les bibliothèques Apple autour pour développer. Je ne sais pas comment vous pouvoir porter sans eux, malheureusement.
Le développement d'Apple est une étrange bête en soi. OS X utilise un port de GCC avec quelques modifications pour le rendre "appley". En théorie, il est possible aux sources du Apple GCC et de la chaîne d'outils ainsi qu'aux Apple noyau et en-têtes de bibliothèque et de construire un compilateur croisé sur votre Windows machine.
Pourquoi vous voudriez emprunter ce chemin me dépasse. Vous pouvez avoir un Mac mini pas cher à partir de 600 $. Le temps que vous investissez pour faire fonctionner correctement un compilateur croisé (en particulier avec un outil Windows Host pour Unix) coûtera probablement plus que les 600 $ de toute façon.
Si vous souhaitez vraiment que votre application multiplateforme s'intéresse à Qt, wxWidgets ou FLTK. Tous fournissent un support multiplateforme avec un minimum de modifications du code de base. Au moins de cette façon, tout ce que vous devez faire est de trouver un Mac pour compiler votre application, et ce n'est pas trop difficile à faire si vous avez des amis à l'esprit technique qui ne craignent pas de vous donner accès SSH à leur Mac.
J'ai trouvé cette petite documentation sur le net: http://devs.openttd.org/~truebrain/compile-farm/Apple-darwin9.txt
Cela décrit exactement ce que vous voulez. Je m'y intéresse moi-même, je ne l'ai pas encore testé (je l'ai trouvé il y a 10 minutes). La documentation semble cependant bonne.
Vous pouvez louer un Mac dans le cloud à partir de ce site Web. Vous pouvez les louer à partir de 1 $, ce qui devrait être suffisant (sauf si vous besoin accès root, alors vous regardez à 49 $ +).