【问题标题】:How to compile Boost with an older std of C++? (C++03 in particular)如何使用较旧的 C++ 标准编译 Boost? (特别是 C++03)
【发布时间】:2016-04-01 12:46:30
【问题描述】:

我在一个依赖于 Boost (http://kratos-wiki.cimne.upc.edu/index.php/Main_Page) 的项目中工作,这个项目目前只支持 C++03。随着 gcc++ (v.5) 的最后一次更新,C++11 已成为默认标准,从技术上讲,我解决了修改 CXX_FLAGS 添加的问题:

-std=c++03

问题来自 Boost 库,我无法使用 C++03 std 编译它(我想,我不知道如何检查我编译的 std)。我尝试使用以下命令来编译 Boost:

./b2 安装阶段 --with-python --with-serialization cxxflags="-std=c++03"

我也尝试过修改 Jamroot 文件,添加以下行:

  <toolset>gcc:<cxxflags>-std=gnu++03
  <toolset>clang:<cxxflags>-std=c++03

但问题仍然存在,当我编译整个项目时,我收到以下警告(多次):

/usr/local/include/boost/type_traits/detail/template_arity_spec.hpp:13:84:注意:#pragma 消息:注意:不推荐使用此标头 (template_arity_spec.hpp) # pragma message("注意:不推荐使用此标头 (template_arity_spec.hpp)")

这就是为什么我怀疑我的更改没有生效。

非常感谢您的帮助

【问题讨论】:

  • 这似乎是 Boost 的一个已知问题,谷歌一下。
  • 我已经做到了,可能我没有做对。
  • permalink.gmane.org/gmane.comp.lib.boost.devel/264164。由于这些只是警告,您可能可以继续您的工作并等待修复。或者,您可以根据需要测试旧的 bo​​ost 版本。

标签: c++ c++11 gcc boost c++03


【解决方案1】:

我认为您现在可以放心地忽略这些警告。我正在用 gcc 5.2.1 和 std=c++11 编译 boost 1_60_0,我得到了同样的警告。上面有一个ticket,但同时它还没有给我带来任何问题。我注释掉了 boost 代码中的两个 [#pragma warning] 行,所以我的构建中不会有太多令人分心的输出:

boost/type_traits/detail/template_arity_spec.hpp 第 13 行:

// noisy: # pragma message("NOTE: Use of this header (template_arity_spec.hpp) is deprecated")

boost/type_traits/detail/bool_trait_def.hpp 第 18 行:

// noisy: # pragma message ("NOTE: Use of this header (bool_trait_def.hpp) is deprecated")

更新 这个问题在 boost 1.61.0 中仍然存在。我再次使用了相同的修复方法。

【讨论】:

  • 这里也一样。这个暂时可以忽略。感谢您提供票证链接。
  • 我不敢相信,但似乎他们没有在 1.61.0 中修复此问题。哦,好吧,同样的代码,同样的修复仍然有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 2022-09-26
  • 1970-01-01
  • 2014-04-27
相关资源
最近更新 更多