Boost:为什么 ~/user-config.jam 中列出的工具集不可用于 ./b2?

Dan*_*aum 5 c++ macos boost

在我尝试回答我自己的问题时,Clang 链接器报告“未找到符号”,尽管“nm -m”显示该名称存在于正在链接的库中,但我发现了一些链接,表明我必须在操作系统上构建 Boost X 以便它显式使用 Clang 并链接到libc++ 此处此处此处

按照指示的步骤(借助额外的谷歌搜索来协助/确认编辑过程user-config.jam,将其放入我的主目录以及其他必要的步骤),我已将以下几行添加到我的~/user-config.jam文件中:

using clanglibcpp : 11
    : "/usr/bin/clang++"
    : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
    ;
Run Code Online (Sandbox Code Playgroud)

./b2然后我从目录运行$BOOST_ROOT

./b2 toolset=clanglibcpp-11 --with-filesystem variant=release link=static threading=multi

不幸的是,无论我做什么,我都会收到以下错误:

ERROR: rule "clanglibcpp.init" unknown in module "toolset"

我已经确认/usr/bin/clang++存在于指示的路径中(确实如此)。我也尝试将以上几行添加到$BOOST_ROOT/tools/build/v2/user-config.jam(没有运气)。我还尝试./bootstrap.sh从 boost 根目录运行,以及运行./b2 --clean. 没有运气。

我应该怎么做才能真正让工具集user-config.jam在 OS X 上的 Boost 版本中生效?

小智 1

@llonesmiz 对 @Dan Nissenbaum 有效的答案:

我不确定,遗憾的是我现在无法检查,但是您可以尝试使用:

using clang : libcpp11 
    : "/usr/bin/clang++"
    : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
    ;
Run Code Online (Sandbox Code Playgroud)

然后像这样调用 b2:

./b2 toolset=clang-libcpp11 --with-filesystem variant=release link=static threading=multi
Run Code Online (Sandbox Code Playgroud)