【问题标题】:Is it possible to build boost with clang and gcc support?是否可以通过 clang 和 gcc 支持来构建提升?
【发布时间】:2015-07-24 22:23:04
【问题描述】:

我遇到了一个奇怪的问题,我需要使用 gcc 和 clang 特定模块访问 boost 库(这些程序交互。一个是 gcc/g++ 独有的,一个是 clang 独有的)。有什么方法可以构建 boost 以便两个模块在调用 boost 时访问相同的位置,但 boost 能够促进 gcc 或 clang 特定的请求?

【问题讨论】:

    标签: c++ macos boost g++ clang


    【解决方案1】:

    这是可能的,但你是否真的应该这样做是值得怀疑的。

    您必须选择将libc++libstdc++ 与这两种编译器一起使用。

    libstdc++ 绝对是更好的,因为 clang 可以完美地处理它, gcc 在解析多个 libc++ 标头时遇到问题。

    这样的事情应该让 clang 在 Mac OS X 上使用 gcc 的 libstdc++

    clang++ \
      -stdlib=libstdc++ \
      -nostdinc++ \
      -Qunused-arguments \
      -nodefaultlibs \
      <path to>x86_64-apple-darwin14/lib/libstdc++.a \
      <path to>x86_64-apple-darwin14/lib/libsupc++.a \
      <path to>lib/gcc/x86_64-apple-darwin14/5.2.0/libgcc.a \
      <path to>lib/gcc/x86_64-apple-darwin14/5.2.0/libgcc_eh.a \
      -lc \
      -Wl,-no_compact_unwind \
      -cxx-isystem <path to>x86_64-apple-darwin14/include/c++/5.2.0 \
      -cxx-isystem <path to>x86_64-apple-darwin14/include/c++/5.2.0/x86_64-apple-darwin14 \
      -mmacosx-version-min=10.7.0
    

    我建议把它放在一个包装脚本中,然后传递CXX=clang++-libstdc++ 到 boost 构建脚本。

    示例包装脚本:

    #!/bin/sh
    
    ls -l "$@"
    

    包装 ls。

    【讨论】:

    • 感谢您的回答。我在实现这一点时遇到了麻烦 - 请您澄清一下如何将其用作包装器?
    • @kilojoules:添加了一个示例包装脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多