web-dev-qa-db-fra.com

Comment compiler pour OS X sous Linux ou Windows?

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?

69
Unknown

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).

22
Brian Campbell

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

  1. Après tant d'années, la norme de l'industrie IDE prend désormais en charge OSX/iOS/Android.

http://channel9.msdn.com/Events/Visual-Studio/Connect-event-2014/311

  1. RadStudio d'Embarcadero prend également en charge la création d'applications OSX/iOS/Android sur Windows.

  2. 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.

49
Viktor Latypov

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.

https://github.com/tpoechtrager/osxcross

29
Thomas
  1. Obtenez " VMware Player "
  2. Obtenez " image vm de Mac OS X "
  3. Compilez/Déboguez/Intégrez et testez votre code sur le nouveau système d'exploitation pour vous assurer que tout fonctionne

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:

  1. Je fais un changement sur OS 1
  2. redémarrer dans OS 2
  3. oublier quelque chose sur OS 1
  4. redémarrer dans OS 1
  5. faire un changement sur OS 1
  6. redémarrer dans OS 2 ... [~ # ~] à nouveau [~ # ~] ...

[~ # ~] bam [~ # ~] il me reste 30 minutes et je n'ai pas fait rien productif.

6
Trevor Boyd Smith

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 .

4
Pablo Santa Cruz

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.

4
Joel Levin

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.

4
Adam Hawes

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.

3
Albert Zeyer

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 $ +).

2
HexCoder