Инструменты сборки для нескольких мобильных платформ

У нас есть сложная кодовая база 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 и клей оболочки, чтобы массировать манифест и удерживать все вместе.

Итак, я ищу советы о том, как унифицировать процесс сборки для этого набора разнообразных платформ.

  • Он обязательно должен справиться со сборкой исполняемых файлов iPhone и Bada, а также нативной части сборки Android (потому что ни у кого нет возможности тестировать все три платформы по отдельности).
  • Должен работать с большим проектом, состоящим из нескольких разделяемых библиотек, одного основного бинарного файла, одного тестового бинарного файла для тех же платформ и нескольких вспомогательных бинарных файлов, созданных только для некоторых платформ (ну, в настоящее время только для Win32).
  • Должна быть возможность генерировать заголовок конфигурации сборки и файл Java с версией из системы контроля версий и некоторыми определяемыми пользователем переменными, так как мы делаем 18 и считаем несколько разных сборок для разных клиентов.
  • И, конечно же, он должен автоматически обрабатывать зависимости (файлы заголовков) и в целом быть надежным.

Что касается других вещей, я готов исправить любые недостатки, но я, очевидно, хотел бы свести количество клейкой ленты и слюны к минимуму, поэтому он должен:

  • Возможность интеграции с Visual Studio, Eclipse и XCode достаточно, чтобы каждая среда могла запускать сборку, загружать продукт сборки в соответствующую цель и прикреплять к нему отладчик.
  • Иметь возможность создавать Java и вызывать пользовательские инструменты упаковки для Android, чтобы нам не приходилось ломать скрипт сборки ant, который Google безвозмездно и несовместимо изменил дважды за последние два года (и старый SDK не может быть скачал).
  • Иметь возможность устанавливать различные файлы данных и вызывать случайные упаковщики и случайные другие сценарии, инструменты и прочее, чтобы их не приходилось смешивать со слишком большим количеством сценариев оболочки.

Пока начали пробовать CMake(было мало времени, так что далеко не продвинулись, но в скором времени надо будет что-то сделать), а также подумали о SCons. Однако несколько лет назад я уже пытался создавать с помощью SCons для Windows CE, но, поскольку он генерирует проекты типа make-файла для Visual Studio, а они не работали для встраиваемых платформ в VS2005, я сдался. CMake может генерировать собственные make-файлы, но для CE требуется пользовательская, немного устаревшая ветка. Поэтому я хотел бы спросить, есть ли какие-либо другие инструменты, которые мы могли бы изучить, или какие-либо известные камни преткновения, связанные с этими инструментами, о которых нам следует знать.

Обновления:Я нашел инструкции для нативных двоичных файлов Android в нескольких местах, и pixellightдаже имеет скрипт cmake для создания apk путем прямого вызова инструментов упаковки. Также этот сценарий оболочкипоказывает это. Использование iPhoneпохоже задокументировано здесь.

8
задан Community 23 May 2017 в 12:23
поделиться