[英]MacPorts clang not using its own headers
我正在尝试使emscripten在OS X 10.8上工作,有关此方面的一些相关问题,请参见此文章 。 显然Xcode附带的clang++
版本太旧了,因此我最近使用MacPorts获得了clang 3.7.0。 我什至告诉CMake使用该编译器(在命令行上传递-DCMAKE_CXX_COMPILER=clang++-mp-3.7
),但仍然失败:
[ 33%] Building CXX object CMakeFiles/optimizer.dir/parser.cpp.o
/opt/local/bin/clang++-mp-3.7 -std=c++11 -fno-exceptions -fno-rtti -O3 -DNDEBUG
-o CMakeFiles/optimizer.dir/parser.cpp.o
-c …/emsdk/emscripten/master/tools/optimizer/parser.cpp
In file included from …/emsdk/emscripten/master/tools/optimizer/parser.cpp:2:
In file included from …/emsdk/emscripten/master/tools/optimizer/parser.h:12:
…/emsdk/emscripten/master/tools/optimizer/istring.h:3:10: fatal error:
'unordered_set' file not found
#include <unordered_set>
^
1 error generated.
我可以通过从命令行启动编译器来重现该问题。 在并行构建模式下,有时它会为optimizer.cpp
抱怨<cstdint>
。 这两个标头都存在于/opt/local/libexec/llvm-3.7/include/c++/v1/
。
clang++
版本(包括其标头)的规范方法是什么? 我是否必须使用-I
并确定完整路径,还是更短? ld
使用-rpath
参数或其他等效方法? libcxx
软件包为空。 通过将CXXFLAGS=--stdlib=libc++
到环境中,我已经解决了原始问题。 然后,即使是系统版本的clang也可以满足我的所有需求。 该标志对于MacPorts的clang
版本同样有效:指定我构建成功,甚至可以(使用-E
编译器开关)验证它是否使用了前面提到的标头。 我仍然不确定是否有任何东西可以确保标题与系统的libc++
版本匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.