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