84 votes

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 ?

53voto

Viktor Latypov Points 9600

Pour Linux, il existe un compilateur croisé GCC préconstruit (à partir des sources GCC modifiées d'Apple accessibles au public).

https://launchpad.net/~flosoft/+archive/cross-apple

Mise à jour pour 2015

  1. Après tant d'années, l'IDE standard du secteur prend désormais en charge OSX/iOS/Android.

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

  1. RadStudio d'Embarcadero permet également de créer des applications OSX/iOS/Android sous Windows.

  2. Ce site réponse par Thomas fournit également un outil de compilation croisée.

Pour toutes ces options, vous avez toujours besoin d'un vrai mac/i-device pour tester l'application.

2 votes

Comment fonctionne-t-il ? Permet-il de compiler Qt pour MacOSX par exemple ?

4 votes

C'est un GCC 4.2 parfaitement valide, capable de compiler de grandes bibliothèques. Cependant, il n'a pas été mis à jour pour les SDK 10.7, 10.8 ou 10.9, et peut donc être considéré comme obsolète. Je l'ai utilisé pour compiler mon propre projet en C/C++ juste pour tester s'il peut être porté et corriger certaines incompatibilités évidentes, puis je l'ai construit sur le vrai mac.

0 votes

Comment puis-je l'installer sur Fedora ?

33voto

Thomas Points 557

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 la version de votre dist. clang ).
En outre, vous pouvez construire une version actualisée de vanilla GCC également (4.6+).

Le LTO fonctionne aussi bien, pour les deux, clang y GCC .

J'utilise actuellement cctools-870 avec ld64-242.

https://github.com/tpoechtrager/osxcross

0 votes

J'ai utilisé votre projet et il fait ce qu'il promet. Testé avec le dernier XCode (7.1) et le dernier OSX (10.11.1).

24voto

Brian Campbell Points 101107

Il semble y avoir quelques scripts qui ont été écrits pour vous aider à mettre en place la compilation croisée pour le Mac ; je ne peux pas dire à quel point ils sont bons, ou s'ils sont applicables à votre projet. Dans la documentation, ils font référence à 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 répond à vos besoins.

Si votre programme est un logiciel libre ou open source, vous souhaiterez peut-être plutôt créer une MacPorts portfile (documentation aquí ), et permettez à vos utilisateurs de construire votre programme en utilisant MacPorts ; c'est généralement la manière préférée d'installer un logiciel libre ou open source portable sur Mac OS X. MacPorts a été connu pour fonctionner sur Linux dans le passé, donc il peut être possible de développer et tester votre Portfile sur Linux (bien qu'il devra évidemment être testé sur un Mac).

11 votes

Ou homebrew de nos jours au lieu de macports.

0 votes

@jcoffland Non, l'inverse. C'est pour construire des applications OS X sur Linux. Lisez le titre. "Compilation croisée sur Linux pour Mac OS X 10.3 - 10.5" (c'est nous qui soulignons). Notez que cette réponse est très ancienne maintenant (presque 7 ans, oups !) et que les réponses ultérieures ci-dessous contiennent des informations plus récentes.

6voto

Trevor Boyd Smith Points 3513
  1. Get " Lecteur VMware "
  2. Get " Image vm 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 plateformes, vous devez absolument doit compiler/exécuter/intégrer/tester sur la plate-forme prévue. Vous ne pouvez pas vous contenter de compiler/exécuter sur une plate-forme et dire ensuite "oh, ça 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 lorsqu'il ne fonctionnera pas exactement de la même manière sur l'autre plateforme.

Le seul moyen que j'ai trouvé qui respecte mon temps/ma productivité/ma capacité à itérer rapidement sur plusieurs plateformes est d'utiliser une VM des autres plateformes.

Il existe d'autres solutions comme le dual-boot et d'autres que je n'ai pas mentionnées mais je trouve qu'elles ne respectent pas ma productivité / mon 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. effectuer un changement sur l'OS 1
  6. redémarrer dans OS 2 ... ENCORE ...

BAM voilà 30 minutes de mon temps et je n'ai rien fait. tout ce qui est productif.

4 votes

Lorsque 3 démarrages prennent 30 minutes, vous avez besoin d'un nouveau matériel ; et probablement la possibilité d'accéder et de modifier le système de fichiers d'un OS depuis un autre. Mais je comprends le sentiment et je préfère aussi les VM parce qu'elles me permettent de les traiter comme des machines physiques dédiées.

11 votes

Le temps nécessaire au redémarrage n'est pas seulement le temps de démarrage, c'est aussi le temps d'arrêt, le redémarrage des démons, la configuration de votre environnement de développement, la vérification que vous avez toujours la dernière version de votre système de contrôle de version, etc.

13 votes

Sans compter que mon cerveau perd toute cohérence de cache et doit lentement recacher tout ce que je dois faire... et très probablement perdre de la productivité lorsque le navigateur web s'ouvre accidentellement.

4voto

Pablo Santa Cruz Points 73944

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 quelques alternatives .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X