Мне удалось скомпилировать несколько библиотек Boost и создать фрейм для использования с OS X, iOS и симулятором iOS, используя этот script: https://github.com/wuhao5/boost/blob/188e905626dbd522f65950102ed0c8ce77cb28e8/boost.sh, основанный на Питере Гудлиффе, работает здесь: http://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html с Boost 1.53.0, используя clang и ссылку на libС++.
Ошибка script при компиляции для симулятора iOS с Boost 1.54.0 со следующей ошибкой: /bin/sh: line 1: -ftemplate-depth-128: command not found
.
Я довольно много рылся, и вот что я знаю:
- В boost.sh iOS симулятор bjam и параметры компилятора включают в себя "-arch i386"
- В примечаниях к выпуску для Boost 1.54.0 указано, что "Boost больше не поддерживает целевой процессор 80386"
- Boost 1.53.0, похоже, отлично компилируется для OS X, iOS и симулятора iOS, используя тот же script
- Boost 1.54.0, похоже, отлично компилируется для OS X и iOS, используя тот же самый script
Вот что, я думаю, знаю:
- При передаче "-d13" в bjam (для создания отладочной информации) появляется, что переменная "CONFIG_COMMAND" не устанавливается при создании для симулятора iOS. Для других конфигураций эта переменная устанавливается в путь к clang и включает параметры компилятора. Для симулятора он пуст, который, как мне кажется, приводит к ошибке выше, как когда bjam пытается запустить компилятор с использованием этой переменной, вместо этого он запускает некоторые дополнительные функции, которые начинаются с глубины шаблона. Следовательно, переменная CONFIG_COMMAND не отображается правильно, что приводит к ее сбою.
Я понятия не имею, почему он не устанавливается, поскольку я недостаточно знаю о системе сборки Boost для просеивания остальной части вывода 100 + МБ, сгенерированного с помощью флага -d13. Я подозреваю, что несовместимость с опцией "-arch i386" была введена с 1.54.0. Я попытался изменить это на "-arch i486" и "-arch x86_32", но та же проблема возникает.
Кто-нибудь еще имел успех? Я бы хотел использовать Boost.Log, поэтому я даже пытаюсь это сделать.