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

Boost: Why is toolset listed in ~/user-config.jam not available to ./b2?

本文关键字:工具集 b2 用于 为什么 user-config Boost jam      更新时间:2023-10-16

在我试图回答自己的问题时,Clang链接器报告"符号未找到";,尽管';nm-m';我发现了一些链接,这些链接表明我必须在OS X上构建Boost,以便它显式地使用Clang并在此处、此处和此处链接到libc++

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

using clanglibcpp : 11
    : "/usr/bin/clang++"
    : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
    ;

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

./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中(运气不好)。我还尝试过从boost根目录运行./bootstrap.sh,以及运行./b2 --clean。运气不好。

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

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

我不确定,很遗憾我现在不能检查,但你能尝试使用吗

using clang : libcpp11 
    : "/usr/bin/clang++"
    : <cxxflags>"-std=c++11 -stdlib=libc++" <linkflags>"-stdlib=libc++"
    ;

然后像这样调用b2:

./b2 toolset=clang-libcpp11 --with-filesystem variant=release link=static threading=multi