Как скомпилировать для OS X в Linux или Windows?

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

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

Ответ 1

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

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

Ответ 2

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

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

Обновление для 2015

  • После стольких лет стандартная среда IDE теперь поддерживает OSX/iOS/Android.

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

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

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

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

Ответ 3

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

В настоящее время он поддерживает clang 3.2 до 3.8 (trunk) (вы можете использовать свой dist clang).
Кроме того, вы можете создать современную ваниль GCC (4.6+).

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

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

https://github.com/tpoechtrager/osxcross

Ответ 4

  • Получить " VMware Player"
  • Получить " Mac OS X vm image"
  • Компилировать/отлаживать/интегрировать и тестировать свой код в новой ОС, чтобы убедиться, что все работает.

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

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

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

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

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

  • Я делаю изменения в ОС 1
  • перезагрузка в ОС 2
  • забыть что-то на ОС 1
  • перезагрузка в ОС 1
  • внести изменения в ОС 1
  • перезагрузитесь в OS 2... СНОВА...

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

Ответ 5

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

Ответ 6

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

Ответ 7

Развитие Apple - это странный зверь для себя. OS X использует порт GCC с некоторыми изменениями, чтобы сделать его "яблочным". Теоретически, возможно, источники для Apple GCC и toolchain, а также ядро ​​Apple и заголовки библиотек и построение кросс-компилятора на вашей машине Windows.

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

Короткий ответ отчасти. Вам нужно будет использовать кросс-платформенную библиотеку, например QT. Существуют IDE, такие как QT Creator, которые позволят вам разрабатывать на одной ОС и генерировать Makefile для других. Для получения дополнительной информации о кросс-платформенной разработке, проверьте кросс-платформенные эпизоды этот подкаст (обратите внимание, что серия не закончилась и новые эпизоды появляются еженедельно).

Как объясняют другие ответы, вы, вероятно, можете скомпилировать Mac на Windows или Linux, но вы не сможете протестировать свои приложения, поэтому, вероятно, вам стоит потратить 600 долларов на Mac, если вы занимаетесь профессиональным программированием, или если вы работаете над с открытым исходным кодом найдите разработчика с Mac, который поможет вам.