NME - gm2d - Android - iOS... Настройка среды для кросс-платформенной разработки

Внимание! На момент эта статья уже не актуальна для тех, кто хочет просто установить стабильную версию и начать ей пользоваться. Сейчас всё гораздо проще.
Эта инфа теперь может пригодиться тем, кто хочет устанавливать и собирать версию из СВН или тем, кто хочет чуть глубже разобраться от каких мучений их избавил install-tool который сейчас входит в NME.

Публикую плоды своих изысканий и тестов настройки среды для создания кросс-платформенных проектов на haXe, позволяющих собирать из одного кода приложения для Android, iOS, webOS и конечно стандартных для haXe flash, c++ ...
Основано в основном на статьях с http://gamehaxe.com и на собственном опыте. На момент поставил такую среду на двух машинах и успешно собираю приложения для Android. В iOS тоже собираю, но с ним не всё так гладко пока.
В общем делюсь тем, с чем успел разобраться сам. Итак поехали:

  1. Если вдруг кто еще не поставил, качаем и ставим haXe: http://haxe.org/download
  2. Ставим hxcpp, nme, gm2d через haxelib:
  3. в консоли:

    haxelib install hxcpp
    haxelib install nme
    haxelib install gm2d

    эти первые два шага идентичны и для установки на Mac и на Linux (на Mac нужно еще запустить @haxelib setup@ перед установкой либ)
    дальше то, что связано с компиляций C++ нужно смотреть для каждой отдельной платформы

  4. качаем и ставим VisualStudio C++ Express. Она нужна hxcpp для компиляции сгенеренного C++ кода
  5. Update: Всё! Новые версии NME и HXCPP вышли на haxelib. так что остальную часть этого раздела можно уже не читать, а переходить сразу к настройке и сборке проекта.

    сейчас уже можно собирать flash, js и cpp версии, но для мобильной разработки текущие стабильные версии nme и hxcpp в haxelib устарели.
    после того, как там появятся новые стабильные версии nme и hxcpp, на этом всё закончится, но пока нужны версии с SVN, поэтому продолжаем:

  6. выбираем папку, где будут лежать SVN-версии этих либ (скажем c:/SVN) и делаем их checkout туда.
  7. hxcpp: http://code.google.com/p/hxcpp/source/checkout, nme: http://code.google.com/p/nekonme/source/checkout
    еще для сборки nme нам понадобятся статические библиотеки: sdl-statiс: http://code.google.com/p/sdl-static/source/checkout их также просто чекаутим в папку sdl-static (название в ее случае важно).
    в результате получаем в папке с:/SVN три лежащие +рядом+ папки: *hxcpp*, *nme*, *sdl-static* c последними версиями этих библиотек

  8. говорим haxelib чтобы он использовал эти папки вместо тех что ставили через него для hxcpp и nme
  9. haxelib dev nme c:/SVN/nme
    haxelib dev hxcpp c:/SVN/hxcpp
    _можно проверить: если сейчас ввести еще @haxelib list@ - покажет установленные либы и пути, на которые мы их перенаправили_

  10. качаем и ставим DirectX SDK версии June 2010
  11. Эта огромная хрень нужна только для *nme* и ради одной маленькой либы dxguid.lib. Автор nme собирался ее добавить, тогда ставить DirectX будет не нужно, но пока вот так
    * Установку доков и сэмплов/исходников в диалоге установки можно отключить, они нам не нужны)

  12. в своей домашней папке (c:/Users/ИмяЮзера) создаем файл “.hxcpp_config.xml” c таким содержимым:
  13. <xml>
      <section id="exes">
         <linker id="dll" if="windows">
            <flag value = "-libpath:c:\SDK\Microsoft DirectX SDK (June 2010)\Lib\x86"/>
         </linker>
      </section>
    </xml>

    (путь к ..\Lib\x86 поставить свой, куда поставили DirectX SDK)

  14. Собираем runtime hxcpp. Для этого из папки C:\SVN\hxcpp\runtime в консоли вызываем:
  15. haxelib run hxcpp BuildLibs.xml

    если ругается, что не может найти пути к Visual Studio значит нужно еще сделать примерно так:
    call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"

    TODO: я у себя как-то сделал, что это вызывается автоматом, но уже забыл как)

  16. Cобираем nme. из папки C:\SVN\nme\project вызываем:
  17. haxelib run hxcpp Build.xml

    Update: по совету profelis, добавляю, что после сборки nme, нужно запустить из папки nme:
    cd install-tool
    haxe InstallTool.hxml

  18. Profit!

Настройка системы

для сборки Android проектов

  1. должны быть установлены/настроены SDK, NDK и остальные инструменты для создания Android приложений ( http://android.com и google в помощь)
  2. в системном окружении должны быть созданы переменные JAVA_HOME, ANDROID_SDK, ANDROID_NDK_ROOT и ANT_HOME
  3. примерно так (подставьте свои пути, куда установили):

    set ANT_HOME=с:\SDK\ant
    set ANDROID_SDK=с:\SDK\android-sdk
    set ANDROID_NDK_ROOT=с:\SDK\android-ndk
    set JAVA_HOME=с:\SDK\Java\jdk1.6.0_24

для сборки iOS проектов

Нужны только собственно Mac OS X и установленный на ней xcode. Больше ничего вроде бы не надо.

Сборка проекта

С использованием gm2d

библиотека gm2d использует installTool встроенный в nme
для сборки для каждой платформы достаточно зайти в папку проекта и ввести одну из следующих строк в консоль:

haxelib run nme test ProjectName.nmml flash
haxelib run nme test ProjectName.nmml cpp
haxelib run nme test ProjectName.nmml android
haxelib run nme test ProjectName.nmml webos
haxelib run nme test ProjectName.nmml neko

соответственно первая команда соберет (и запустит) из вашего проекта swf, вторая исходники на c++ и исполняемый exe, третья android-проект и apk, четвертая проект для webOS и последняя для Neko VM

Для сборки xcode-проекта для iOS строка немного меняется и выглядит нам момент таким образом:

haxelib run nme update ProjectName.nmml iphone

причем на момент, насколько понимаю (поправьте если не прав) и любая из следующих строк будет давать тот же результат:
haxelib run nme update ProjectName.nmml iphonesim
haxelib run nme update ProjectName.nmml ios

сборку под iphonesim нужно обязательно делать под OS X, все остальное можно собирать и под Windows