У нас есть сложная кодовая база C++, предназначенная для нескольких мобильных платформ. В настоящее время у нас есть Windows CE(от 4.2 до 6.5 как необработанный CE, так и для мобильных устройств на их основе), Android(2.1+), iPhone(4+), почти рабочий Bada(2.0+) и если что-то выйдет из нового C++/CX, скорее всего добавят Windows Phone(8+). тестовая версия на Win32и служебное приложение на Win64, которое разделяет s мой код. Мы также уже пытались скомпилировать модульные тесты для Linux, и уже возникли вопросы (пока слишком маленький объем бизнеса, но это может измениться), чтобы заставить его работать на некоторых других платформах Linux.
В настоящее время мы компилируем код с помощью собственных инструментов для каждой платформы. Каждый из них довольно сложен и имеет некоторые хаки внутри или вокруг него для достижения разумных сборок в один клик. И для Bada мы еще не решили сборки за пределами Eclipse, настроенного Samsung, что нам придется сделать для производства.
Пока это работает, но становится все больше и больше проблемой обслуживания. Самой большой проблемой в настоящее время является сборка iPhone, потому что, в отличие от файлов проекта Visual Studio и простых make-файлов, невозможно вручную добавлять/удалять/переименовывать файлы в проекте XCode, и только у двух человек есть MacOS boxen и какой-либо опыт работы с XCode (в то время как у всех есть Windows и знает Visual Studio). Нам также нужно создать несколько make-файлов для цели Bada (это простая цепочка инструментов GNU, так что все, что способно к кросс-компиляции с ними, должно подойти), и я бы не стал избавляться от некоторых кладжей в сборке Android: исправить ошибку в обработка зависимостей при сборке под cygwin, некоторые хаки поверх скрипта сборки ant и клей оболочки, чтобы массировать манифест и удерживать все вместе.
Итак, я ищу советы о том, как унифицировать процесс сборки для этого набора разнообразных платформ.
Что касается других вещей, я готов исправить любые недостатки, но я, очевидно, хотел бы свести количество клейкой ленты и слюны к минимуму, поэтому он должен:
Пока начали пробовать CMake(было мало времени, так что далеко не продвинулись, но в скором времени надо будет что-то сделать), а также подумали о SCons. Однако несколько лет назад я уже пытался создавать с помощью SCons для Windows CE, но, поскольку он генерирует проекты типа make-файла для Visual Studio, а они не работали для встраиваемых платформ в VS2005, я сдался. CMake может генерировать собственные make-файлы, но для CE требуется пользовательская, немного устаревшая ветка. Поэтому я хотел бы спросить, есть ли какие-либо другие инструменты, которые мы могли бы изучить, или какие-либо известные камни преткновения, связанные с этими инструментами, о которых нам следует знать.
Обновления:Я нашел инструкции для нативных двоичных файлов Android в нескольких местах, и pixellightдаже имеет скрипт cmake для создания apk путем прямого вызова инструментов упаковки. Также этот сценарий оболочкипоказывает это. Использование iPhoneпохоже задокументировано здесь.