Construya Boost.Locale con iconv para iOS

Actualmente estoy tratando de crear Boost.Locale para iOS, pero no puedo conseguirlo para encontrar el iconv lib (estoy desarrollando otras partes de Boost para iOS, como thread o filesystem ).

He intentado dejar que Boost.Build lo encuentre por sí mismo, he intentado establecer la variable ICONV_PATH para apuntar en el icono de iPhoneOS SDK lib. Comprobando el Jamfile en Boost.Locale, tropecé con esa regla:

 lib iconv : : <search>$(ICONV_PATH)/lib <link>shanetworking <runtime-link>shanetworking : : <include>$(ICONV_PATH)/include ; 

Así que pensé que la configuration -sICONV_PATH a /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr sería suficiente, ya que este directory contiene una libreta y una carpeta de include que contienen el icono lib y el encabezado, pero Boost todavía no puede encontrarlo y escupe:

 iconv (libc) : no iconv (separate) : no icu : no icu (lib64) : no Boost.Locale needs either iconv or ICU library to be built. 

Tenga en count que invoco siempre b2 con la opción --reconfigure y, por lo tanto, no es el resultado del almacenamiento en caching de una invocación anterior (que tendría un final (cached) en la list anterior.

Entonces, ¿hay alguna manera de apuntar correctamente a Boost en la implementación de iconv presente en el SDK de iOS? Me gustaría evitar build un icono separado si es posible.

Me encontraba con problemas similares. Después de algunas excavaciones y algunos arenques rojos aprendí que boost detecta iconv al comstackr el progtwig has_iconv.cpp. En mi caso (utilizando el script boost.sh que muchas personas parecen usar para comstackr para iOS), hubo muchos errores de compilation en config.log causados ​​por una syntax de uso incorrecta en user-config.jam. ¡Entonces el problema, al less para mí, no estaba configurando ICONV_PATH, sino que comstackba el progtwig de detección! Quizás tengas un problema similar.

Hice una escritura completa de encontrar en mi blog si te interesa.

Debería recibir la siguiente salida de logging al build

Si la biblioteca iconv no se encuentra en las comstackciones de Darwin / Mac OS X, asegúrese de que no haya múltiples instalaciones de iconv y proporcione la opción de compilation -sICONV_PATH para señalar la location correcta de la biblioteca iconv.

Primero necesita Bootstrap la location, donde $ ICU = directory raíz ICU y el directory en el que están comstackdos los productos de construcción ICU ("bin /", "include /", etc.):

 .\bootstrap --with-icu=$ICU 

Entonces

 .\b2 boost.locale.icu=on boost.locale.std=off -sICU_PATH="$ICU" --with-chrono --with-locale --with-system --with-thread link=static stage cxxflags="-miphoneos-version-min=9.0 -stdlib=libc++" 

Última respuesta, pero aquí hay una configuration de trabajo que soporta Boost.Locale en iOS usando la biblioteca iconv (boost v1_64_0). Una implementación está disponible desde https://github.com/Cogosense/iOSBoostFramework que utiliza un Makefile para crear un marco de refuerzo para las architectures armv7, armv7s, arm64, i386 y x86_64.

Para crear ARM de 32 bits, cree un usuario-config.jam con el siguiente contenido:

 using clang-darwin : arm : xcrun --sdk iphoneos clang++ : <cxxflags>"-miphoneos-version-min=8.0 -arch armv7s -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable" <linkflags>"-arch armv7s" <striper> ; 

la architecture también se puede establecer en armv7 , cambie el valor de cxxflags a su gusto, pero se requiere la marca -arch .

Mejora de compilation para el objective de iPhone de 32 bits con el siguiente command de compilation:

 BOOST_BUILD_USER_CONFIG=<path-to-arm32-jam-config>/user-config.jam \ SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \ ./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \ toolset=clang-darwin-arm \ target-os=iphone 

Para crear ARM de 64 bits, cree un usuario-config.jam con el siguiente contenido:

 using clang-darwin : arm64 : xcrun --sdk iphoneos clang++ : <cxxflags>"-miphoneos-version-min=8.0 -arch arm64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable" <linkflags>"-arch arm64" <striper> ; 

aceleración de compilation para el objective de iPhone de 64 bits con el siguiente command de compilation:

 BOOST_BUILD_USER_CONFIG=<path-to-arm64-jam-config>/user-config.jam \ SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \ ./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \ toolset=clang-darwin-arm64 \ target-os=iphone 

Para build un simulador de 32 bits x86, cree un usuario-config.jam con el siguiente contenido:

 using clang-darwin : x86 : xcrun --sdk iphonesimulator clang++ : <cxxflags>"-miphoneos-version-min=8.0 -arch i386 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -Wall -pedantic -Wno-unused-variable" <linkflags>"-arch i386" <striper> ; 

Mejora de compilation para el iPhone Simulator de 32 bits con el siguiente command de compilation:

 BOOST_BUILD_USER_CONFIG=<path-to-x86-jam-config>/user-config.jam \ SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path) ./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \ toolset=clang-darwin-i386 \ target-os=iphone 

Para crear el simulador de 64 bits x86, cree un usuario-config.jam con el siguiente contenido:

 using clang-darwin : x86_64 : xcrun --sdk iphonesimulator clang++ : <cxxflags>"-miphoneos-version-min=8.0 -arch x86_64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -Wall -pedantic -Wno-unused-variable" <linkflags>"-arch x86_64" <striper> ; 

aceleración de compilation para el iPhone Simulator de 64 bits con el siguiente command de compilation:

 BOOST_BUILD_USER_CONFIG=<path-to-x86_64-jam-config>/user-config.jam \ SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path) ./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \ toolset=clang-darwin-x86_64 \ target-os=iphone 
Intereting Posts