如何在不启用例外的情况下构建boost 1.70.0?

时间:2019-05-08 14:42:58

标签: c++ boost build

我已经升级到Boost 1.70.0,并使用bootstrap和b2构建了二进制文件,并将其插入到我们的代码库中,但是不幸的是,由于缺少一个函数,我收到了很多链接器错误:boost :: throw_exception(类stdext :: exception const&)。

我在源代码中发现了BOOST_EXCEPTION_DISABLE和BOOST_NO_EXCEPTIONS作为预处理程序测试,但是我不知道如何修改构建配置以确保链接器不会查找该符号。我试图在每个源文件的顶部定义这些符号中的每一个,但无济于事,所以我想象构建增强二进制文件会引入这种依赖性。

这以前不是问题,所以我怀疑以前的版本是通过狡猾的方式构建的,以禁止使用异常。但是,工作室里没有人会记得这一点。

1 个答案:

答案 0 :(得分:0)

我认为答案是使用自定义“ b2”命令进行构建。例如,在linux下毫无例外地构建数学库。显然,如果要在MSVC下进行构建,则需要使用MS样式的标志。
并非所有的库都生成二进制文件,因此您也需要将它们添加到自己的版本中。另外,请记住,并非所有库都支持无例外。

./b2 cxxflags="-fno-exceptions -DBOOST_NO_EXCEPTIONS" --with-system

查看构建了哪些库

./b2 --show-libraries

请参阅here,以获取有关自定义建筑问题的更多一般建议。