如何在OS X 10.8.4上为iOS模拟器(6.1)编译Boost 1.54.0(1.54)?

Rot*_*Mho 11 c++ boost clang ios c++11

我已经成功地编译了几个Boost库,并使用这个脚本创建了一个用于OS X,iOS和iOS模拟器的框架:https://github.com/wuhao5/boost/blob/188e905626dbd522f65950102ed0c8ce77cb28e8/boost.sh基于Peter Goodliffe在这里的工作:http://goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html,使用了使用clang和链接libc ++的Boost 1.53.0.

使用Boost 1.54.0编译iOS模拟器时脚本失败,并出现以下错误:/bin/sh: line 1: -ftemplate-depth-128: command not found.

我做了很多挖掘,这就是我所知道的:

  • 在boost.sh中,iOS模拟器bjam和编译器选项包括"-arch i386"
  • Boost 1.54.0的发行说明指出"Boost不再支持80386目标CPU"
  • Boost 1.53.0似乎可以使用相同的脚本编译为OS X,iOS和iOS模拟器
  • Boost 1.54.0似乎可以使用相同的脚本编译为OS X和iOS本身

以下是我认为我所知道的:

  • 将"-d13"传递给bjam(以生成调试信息)时,似乎在构建iOS模拟器时未设置变量"CONFIG_COMMAND".对于其他配置,此变量设置为clang的路径,并包含编译器选项.对于模拟器,它是空的,我相信导致上面的错误,因为当bjam尝试使用此变量运行编译器时,它会运行一些以模板深度开头的附加选项.因此,CONFIG_COMMAND变量似乎没有正确设置导致失败.

我不知道为什么它没有被设置,因为我不太了解Boost构建系统来筛选它使用"-d13"标志生成的其余100 + MB输出.我怀疑1.54.0引入了与"-arch i386"选项的不兼容性.我已经尝试将其更改为"-arch i486"和"-arch x86_32"但出现同样的问题.

还有其他人在这方面取得了成功吗?我想使用Boost.Log这就是为什么我甚至尝试这个.

Ako*_*Ako 7

我通过更改buildBoostForiPhoneOS()中的行来使用boost.sh进行构建

./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
Run Code Online (Sandbox Code Playgroud)

./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
Run Code Online (Sandbox Code Playgroud)

使用Boost pkg下载和解压缩修改了boost.sh.只需要运行并完成所有操作!

Boost 1.54
MacOSx 10.8.4
Xcode 4.6.3
Run Code Online (Sandbox Code Playgroud)

  • 做得好.我扩展了@ matthias的脚本来构建arm64和x86_64.这是要点:https://gist.github.com/rsobik/7513324 (3认同)