在 Xcode 5 上使用 Boost - Apple LLVM 5.0

Posted

技术标签:

【中文标题】在 Xcode 5 上使用 Boost - Apple LLVM 5.0【英文标题】:Using Boost on Xcode 5 - Apple LLVM 5.0 【发布时间】:2013-09-19 07:10:49 【问题描述】:

由于只有一个编译器 LLVM 5.0,我在为 Xcode 5 构建 Boost 时遇到了问题。

我尝试过使用 --c++11 的 Homebrew,使用 clang.... 我尝试了各种想法和脚本,但到目前为止都没有奏效。

【问题讨论】:

您在这个 SO 问题中看到过boost.sh 吗? ***.com/questions/17714635/… 不,我还没有看到这个......即使我搜索了 3 天。会试一试 我使用了超级秘密魔法词序列“为 ios 构建提升”;-) 该链接很有用,但不适用于 XCode 5。它使用 darwin,最新的 XCode 仅适用于 Clang。谢谢 我刚刚下载了boost.sh,它毫无问题地构建了 iOS 版本的库(OSX 10.8 上的 Xcode 5 DP 6)。它无法为 iphone 模拟器构建,但这是我链接到的问题的问题。 【参考方案1】:

为使用 clang/llvm(Xcode 5 的唯一编译器)编译的 boost 1.54.0 构建 32/64 位胖静态二进制文件:

    下载 unix tarball(不是 ZIP!-- 有 CR/LF 行结尾并且会 gack) 解压。 cd 到 boost_1_54_0/

    运行:

    ./bootstrap.sh 工具集=clang

    运行:

    ./b2 toolset=clang --without-mpi cxxflags="-arch i386 -arch x86_64 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -ftemplate-depth=512 " linkflags="-stdlib=libc++" 链接=静态阶段

...将输出库放入 ./stage/lib

然后将库移动到您想要的位置。

这些是发布库,应该就是你所需要的。

这是针对 OSX 的。对于 iOS,您可以更改 -arch 并在 cxxflags= 中添加其他选项。

如果需要消息传递接口,在b2命令中去掉--without-mpi。

==== 趣闻:

构建提升似乎是一个移动目标,因此这些说明可能会在未来的版本中中断 我尝试在 cxxflags= 中关闭 -Wno-xxxx 警告...但没有成功 bjam 和 b2 是同一个东西,b2 是新名字 clang 作为一流的工具集被添加到某个地方,因此您可以忽略网络上的任何指令来修改“user-config.jam” (对于这些一次性构建,您需要的一切似乎都可以通过 b2 命令行传递。)

【讨论】:

感谢分享。这实际上就是我们这样做的方式,将所有标志放在 cxx 标志中,它可以完美运行。太糟糕了 brew 当时没有工作,我不确定他们是否有更新 clang 5.0。另外,您的注释是正确的,这适用于 Boost 1.54,我在 1.49 上遇到了一些问题。正确回答问题,谢谢! 它显示“x86:是”、“32 位:否”、“64 位:否”。它实际上是用 64 位支持编译的吗?我完全按照你输入的方式输入了它。 那么arm7和arm7s呢?你能帮我并在这里输入我必须执行的整个命令以使 lib 在设备上运行吗? @pawel.kalisz 你能找到在安卓设备上执行此操作的命令吗? 实际上对我来说只是在项目设置中从 libc++ 切换到 libstd++,所有问题都消失了。

以上是关于在 Xcode 5 上使用 Boost - Apple LLVM 5.0的主要内容,如果未能解决你的问题,请参考以下文章

应用程序加载器/Xcode 卡在“使用 App Store 验证资产”上

在 Xcode 6.3 中使用 Boost C++?

在 Xcode 5 项目中添加第二个目标

如何使用 Xcode 5.0.2 在 Mavericks 上签署应用程序?

Mac Boost安装及使用(命令行和Xcode)

将 boost 二进制文件嵌入到 xcode 项目中