Я программирую игру, используя C ++ и OpenGL / SDL, используя Visual Studio в качестве моей IDE. У меня нет Mac, и я даже смутно знаком с платформой. Но я все-таки хочу выпустить для пользователей Mac.
У меня три вопроса. Могу ли я писать и компилировать программы для Mac на ПК? Если я могу, есть ли возможные подводные камни для этого? И, наконец, можно ли скомпилировать VS2010 для Mac или мне понадобится другой компилятор?
Если вы используете SDL, то ответ таков: «вы можете приблизиться к своему желанию, вплоть до последнего шага». Возможность написать игровую программу в одной кодовой базе, а затем перенести эту кодовую базу на разные машины, скомпилировать и заставить работать это именно то, для чего была разработана библиотека Simple DirectMedia! Это не было бы очень популярно, если бы не сделало это разумной целью.
Это не означает, что вы сможете нажать кнопку и получить бинарный пакет для Macintosh или Linux из Visual Studio. Но вы всегда можете найти друзей и попросить их попробовать компиляцию для вас на базе кода. Если вы были осторожны, вызывая функции только из стандартной библиотеки C ++ И оставаясь внутри коробки, которую дает вам SDL, она должна хорошо компилироваться …теоретически.
Обновление 2018: — Если вы хотите скомпилировать на Mac и не имеете, Travis-CI теперь имеет виртуализированная OS X, так что вы можете запустить clang и фактически заставить его загрузить полученные двоичные файлы куда-нибудь. Вы, вероятно, не хотите ждать полной сборки по сети каждый раз, когда вносите изменения … но как только вы получаете кроссплатформенную базу кода, основанную на OS X, непрерывная интеграция может гарантировать, что вы продолжите в том же духе.
В C ++ может быть сложнее, чем в других языках, чтобы убедиться, что вы остаетесь в «песочнице переносимости» (особенно если вы новичок). И это может быть сложнее, если вы будете следовать учебным пособиям, специально предназначенным для инструментов Microsoft, поскольку в их документации мало вопросов о том, как посоветовать вам делать вызовы только для Windows. Поэтому вероятность того, что он сможет передать «полностью отлаженный» код другу, скомпилировать его и работать на новой платформе в первый раз, будет низкой.
Вам понадобится период тестирования, конечно. И вам, вероятно, не следует ждать до последней минуты, чтобы кто-то еще удостоверился, что основы работают, скомпилировав его в XCode или где-либо еще. Вы можете снизить риск написания непереносимого кода, используя вместо этого компилятор GCC, который с большей вероятностью будет жаловаться, если вы начнете вводить зависимости, которые на самом деле не являются кроссплатформенными.
Также может быть возможно запустить «Hackintosh» виртуальная машина, если вы любите жить на грани. Вы, безусловно, можете создать виртуальную машину Linux и попробовать собрать ее под нее, и если она будет работать, это повысит уверенность в том, что сборка Mac тоже будет работать. Хотя это не гарантируется.
Во-первых, вы не можете кросс-компилировать для Mac. Вам понадобится их «GCC». Универсальный двоичный файл Mac можно создать (теоретически) на ПК, но практически это пока невозможно.
VS2010 не может компилироваться для Mac, хотя, если вы собираетесь использовать другой язык, возможно, вы можете написать код для Mac (например, в Python).
Любые кроссплатформенные языки помогут. Python, Java, Ruby, Perl
Одним из вариантов является использование Java. Если вы объедините это с виджетами eclipse RCP SWT, вы можете настроить таргетинг на Win / Linux / OSX с помощью собственного LAF. Возможно, вы захотите использовать Eclipse в качестве вашей IDE.
Если ты действительно должен используя c ++, вы могли бы стремиться к wxWidgets или какому-то другому кроссплатформенному набору виджетов, но для компиляции действительно потребуется копия всех библиотек OSX и набор компиляторов, который знает, как нацеливать платформу / линковку.
Я бы порекомендовал маршрут Java, если вы не хотите владеть каким-либо оборудованием Apple … гораздо менее болезненным. Помимо множества языков, поддерживаемых JVM, вам даже не нужно писать на Java … попробуйте Scala!