是否有可能通过clang和gcc支持来提升?

时间:2015-07-24 22:23:05

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

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

1 个答案:

答案 0 :(得分:1)

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

您必须选择在两个编译器中使用libc++libstdc++

libstdc++绝对是更好的,因为铿锵能够完美地处理它, 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。