¿Cómo puedo comstackr Boost 1.54.0 (1.54) para el simulador de iOS (6.1) en OS X 10.8.4?

He logrado comstackr varias de las bibliotecas de Boost y crear un marco para su uso con OS X, iOS y el simulador de iOS usando este script: https://github.com/wuhao5/boost/blob/188e905626dbd522f65950102ed0c8ce77cb28e8/boost.sh basado en el trabajo de Peter Goodliffe aquí: http://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html con Boost 1.53.0 utilizando el clang y enlazando con libc ++.

La secuencia de commands falla al comstackr para el simulador de iOS con Boost 1.54.0 con el siguiente error: /bin/sh: line 1: -ftemplate-depth-128: command not found .

Hice un poco de excavación y aquí está lo que sé:

  • En boost.sh, las opciones de comstackdor y simulador de iOS incluyen "-arch i386"
  • Las notas de la versión para Boost 1.54.0 indican que "Boost ya no es compatible con la CPU de destino 80386"
  • Boost 1.53.0 parece comstackr bien para OS X, iOS y el simulador de iOS usando el mismo script
  • Boost 1.54.0 parece comstackr bien para OS X e iOS usando el mismo script

Esto es lo que creo que sé:

  • Al pasar "-d13" a bjam (para generar información de debugging), parece que la variable "CONFIG_COMMAND" no se está configurando al crear el simulador de iOS. Para las otras configuraciones, esta variable se establece en la ruta de acceso al clang e incluye las opciones del comstackdor. Para el simulador, está vacío, lo que creo lleva al error anterior, ya que cuando bjam intenta ejecutar el comstackdor con esta variable, en su lugar ejecuta algunas opciones añadidas que comienzan con la profundidad de la plantilla. Por lo tanto, la variable CONFIG_COMMAND no parece estar configurándose correctamente causando el error.

No tengo idea de por qué no está configurado, ya que no sé lo suficiente sobre el sistema de compilation de Boost para examinar el rest de la salida de 100 + MB que generó con el indicador "-d13". Sospecho que se introdujo una incompatibilidad con la opción "-arch i386" con 1.54.0. He intentado cambiar esto a "-arch i486" y "-arch x86_32" pero ocurre el mismo problema.

¿Alguien más tuvo éxito con esto? Me gustaría utilizar Boost.Log, por lo que incluso estoy intentando esto.

Lo conseguí construyendo con el boost.sh dado aquí al cambiar la línea en buildBoostForiPhoneOS ()

 ./bjam -j16 --build-dir=iphonesim-build --stagedir=iphonesim-build/stage --toolset=darwin architecture=x86 target-os=iphone macosx-version=iphonesim-${IPHONE_SDKVERSION} link=static stage 

a

 ./bjam -j16 --build-dir=iphonesim-build --stagedir=iphonesim-build/stage --toolset=darwin-${IPHONE_SDKVERSION}~iphonesim architecture=x86 target-os=iphone macosx-version=iphonesim-${IPHONE_SDKVERSION} link=static stage 

Se modificó boost.sh con la descarga y el desembalaje de Boost pkg. ¡Solo necesita correr y todo listo!

 Boost 1.54 MacOSx 10.8.4 Xcode 4.6.3 

Me di count de esto hace un time leyendo a través de los diffs de cada file de jam entre boost 1.53.0 y 1.54.0, lo que fue una empresa seria. Tenía la intención de publicar un parche, pero solo encontrar la causa tomó un time que no tuve, y ahora no recuerdo qué fue.

En cualquier caso, recuerdo la solución rápida que solía seguir y cumplir con un ploop. Es, para impulsar 1.54.0, suministrar bjam con el argumento "toolset = darwin- [version] ~ iphonesim". También puede dar herramientas de armado toolset = darwin- [versión] ~ iphone, aunque no lo necesite.

Por ejemplo, utilizando el SDK de iOS 6.1:

 ./b2 toolset=darwin-6.1~iphonesim architecture=x86 target-os=iphone macosx-version=iphonesim-6.1 link=static variant=debug define=BOOST_TEST_NO_MAIN define=BOOST_TEST_ALTERNATIVE_INIT_API linkflags="-stdlib=libc++" -j2 -d+2 -sICU_PATH=/usr/local/icu --without-python --layout=tagged --build-dir="/Users/wix/Desktop/boost_1_54_0/_build/simd_build" --stagedir="/Users/wix/Desktop/boost_1_54_0/_build/simd_stage" --debug-configuration stage 

Si esto no funciona para usted, hágamelo saber y, si tengo un momento, obtendré la copy de security de directory de construcción anterior para ver si hay algo más que hice. El command anterior es de mi histfile.

Además, para su información, haga que el paso de verificación de la UCI para las comstackciones de arm que apunten solo a v7 y v7s con las libs de la UCI creadas de la misma manera, aplique el siguiente parche a tools / build / v2 / tools / darwin.jam:

 460,464c460,465 < if $(instruction-set) { < options = -arch$(_)$(instruction-set) ; < } else { < options = -arch arm ; < } --- > #if $(instruction-set) { > # options = -arch$(_)$(instruction-set) ; > #} else { > # options = -arch arm ; > #} > options = -arch armv7 ; 

Además, de manera más general, puede necesitar algo como lo siguiente en su ~ / user-config.jam:

 using clang : : : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++" ; using darwin : 6.1~iphone : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -arch armv7s -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -miphoneos-version-min=5.1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk : <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer : <architecture>arm <target-os>iphone ; using darwin : 6.1~iphonesim : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -miphoneos-version-min=5.1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk : <striper> <root>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer : <architecture>x86 <target-os>iphone ; 

Además, para boost :: context para build correctamente para el simulador, necesitaba agregar lo siguiente a libs / context / build / Jamfile.v2:

 alias asm_context_sources : asm/make_i386_sysv_macho_gas.S asm/jump_i386_sysv_macho_gas.S : <address-model>32 <architecture>x86 <binary-format>mach-o <target-os>iphone <toolset>darwin ; 

Sobre la base de las respuestas en esta publicación y las secuencias de commands creadas por otras personas, preparé un script bash que construye el marco de impulso para iOS y OSX con Xcode 5, es decir, para armv7, armv7s, arm64, i386 y x86_64.

Mire aquí https://github.com/mgrebenets/boost-xcode5-iosx .

Sé con certeza que construye impulso a partir de 1.49.0

Para aquellos interesados ​​en mantenerse al día:

Puede usar el BOOST 1.57.0 con las bibliotecas y encabezados estáticos ofxiOSBoost: https://github.com/danoli3/ofxiOSBoost

Lanzamientos para libc ++ (c ++ 11), libstdc ++.

Todos los scripts de construcción están en la carpeta / scripts (script actualizado de Peter Goodliffe)