Как скомпилировать для OS X в Linux или Windows? - PullRequest
69 голосов
/ 29 марта 2009

Я хотел бы перенести свои приложения на C / C ++ на OS X.

У меня нет Mac, но у меня есть Linux и Windows. Есть ли какой-нибудь инструмент для этого?

Ответы [ 11 ]

48 голосов
/ 27 апреля 2012

Для Linux существует предварительно собранный кросс-компилятор GCC (из общедоступных модифицированных источников Apple GCC).

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

Обновление за 2015 год

  1. Через столько лет стандартная среда IDE теперь поддерживает OSX / iOS / Android.

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

  1. Radarudio Embarcadero также поддерживает создание приложений для OSX / iOS / Android в Windows.

  2. Этот ответ от Томас также предоставляет инструмент кросс-компиляции.

Для всех этих опций вам все еще нужно настоящее mac / i-устройство для тестирования приложения.

29 голосов
/ 10 ноября 2013

Я создал проект под названием OSXCross , который нацелен на OS X (10.4-10.9) из Linux.

В настоящее время он поддерживает clang 3,2 до 3,8 (транк) (вы можете использовать clang) вашего дистрибутива.
Кроме того, вы можете создать современную ваниль GCC (4.6+).

LTO работает как для clang, так и для GCC.

В настоящее время используется cctools-870 с ld64-242.

https://github.com/tpoechtrager/osxcross

22 голосов
/ 29 марта 2009

Похоже, некоторые скрипты , которые были написаны, чтобы помочь вам настроить кросс-компиляцию для Mac; Я не могу сказать, насколько они хороши или насколько применимы к вашему проекту. В документации они ссылаются на эти инструкции для кросс-компиляции для 10.4 и эти инструкции для кросс-компиляции для 10.5; эти инструкции могут быть более полезными, чем сценарий, в зависимости от того, насколько хорошо сценарий соответствует вашим потребностям.

Если ваша программа бесплатна или имеет программное обеспечение с открытым исходным кодом, вы можете вместо этого создать MacPorts файл порта (документация здесь ) и позволить своим пользователям создавать вашу программу с использованием MacPorts. ; как правило, это предпочтительный способ установки переносимого бесплатного программного обеспечения или программного обеспечения с открытым исходным кодом в Mac OS X. MacPorts, как известно, в прошлом работал на Linux, поэтому может быть возможно разработать и протестировать ваш Portfile на Linux (хотя, очевидно, потребуется для тестирования на Mac).

6 голосов
/ 29 марта 2009
  1. Get " VMware Player "
  2. Получить " Mac OS X vm image "
  3. Компиляция / Отладка / Интеграция и тестирование вашего кода на новой ОС, чтобы убедиться, что все работает

Когда вы пытаетесь заставить что-то работать на нескольких платформах, вы абсолютно должны скомпилировать / запустить / интегрировать / протестировать на предполагаемой платформе. Вы не можете просто скомпилировать / запустить на одной платформе, а затем сказать: «О, это должно работать так же на другой платформе».

Даже с действительно хорошим кроссплатформенным языком, таким как Java, вы столкнетесь с проблемами, которые не будут работать точно так же на другой платформе.

Единственный найденный мной способ, который учитывает мое время / производительность / способность к быстрой итерации на нескольких платформах, - это использовать виртуальную машину других платформ.

Существуют и другие решения, такие как двойная загрузка, которые я не упомянул, но я считаю, что они не уважают мою производительность / время.

Взять в качестве примера двойную загрузку:

  1. Я делаю изменения в ОС 1
  2. перезагрузиться в ОС 2
  3. забудь что-нибудь в ОС 1
  4. перезагрузиться в ОС 1
  5. внести изменения в ОС 1
  6. перезагрузиться в ОС 2 ... СНОВА ...

БАМ прошло 30 минут моего времени, и я не сделал ничего продуктивного.

4 голосов
/ 29 марта 2009

Разработка Apple - странный зверь сам по себе. OS X использует порт GCC с некоторыми изменениями, чтобы сделать его «appley». Теоретически, можно использовать исходные коды Apple GCC и цепочки инструментов, а также заголовки ядра и библиотеки Apple и создать кросс-компилятор на вашем компьютере с Windows.

Почему вы хотите пойти по этому пути, мне не под силу. Вы можете купить дешевый Mac mini от 600 долларов. Время, затрачиваемое на то, чтобы кросс-компилятор работал правильно (особенно с хостом Windows для инструментов Unix), в любом случае, вероятно, будет стоить более 600 долларов.

Если вы действительно хотите, чтобы ваше приложение кроссплатформенно смотрело на Qt, wxWidgets или FLTK. Все они обеспечивают кроссплатформенную поддержку с минимальными изменениями в базовом коде. По крайней мере, в этом случае все, что вам нужно сделать, - это найти Mac для компиляции вашего приложения, и это не так уж сложно сделать, если у вас есть друзья с технической точки зрения, которые не против предоставить вам SSH-доступ к своим Mac.

4 голосов
/ 29 марта 2009

Вам понадобится набор инструментов для кросс-компиляции для mach-o, но даже если у вас есть это, у вас не будет библиотек Apple для разработки. Я не уверен, как бы вы могли без них портировать, к сожалению.

4 голосов
/ 29 марта 2009

Вам определенно понадобится OS X как-то. Даже если у вас нет Mac, вы все равно можете попробовать альтернативу .

3 голосов
/ 08 мая 2009

Я нашел эту маленькую документацию в сети: http://devs.openttd.org/~truebrain/compile-farm/apple-darwin9.txt

Это описывает именно то, что вы хотите. Я заинтересован в этом сам, хотя еще не проверял (нашел 10 минут назад) Документация, похоже, хорошая.

2 голосов
/ 17 декабря 2014

Вы можете нанять мака в облаке с этого веб-сайта. Вы можете нанять их от 1 доллара США, чего должно быть достаточно (если вам не нужен доступ с правами суперпользователя, тогда вы ищете $ 49 +).

0 голосов
/ 29 марта 2009

Существует несколько настроек кросс-компиляции, но почти все они предназначены для распределенной компиляции в стиле distcc. Насколько мне известно, невозможно напрямую нацелиться на платформу Mac, не имея на самом деле Mac. Самое близкое, что вы можете получить, не прибегая к QT или wxWidgets - это OpenStep с GNUStep или аналогичным, но это не настоящая платформа Какао, просто очень близко.

...