【问题标题】:How to selectively include boost headers depending on boost version如何根据 boost 版本有选择地包含 boost headers
【发布时间】:2017-11-20 09:36:47
【问题描述】:

Boost 中的这种变化导致一些头文件位置发生变化:https://github.com/boostorg/property_tree/commit/ea940990691de91e9b22255d9b450fcdac237646

我正在开发一个代码库,一些用户使用旧版本的 boost 构建代码库,并使用旧的标头位置,例如#include <boost/property_tree/detail/json_parser_error.hpp> 而不是较新的 #include <boost/property_tree/json_parser/error.hpp>。我想保持与旧的(1.61 之前)和新的增强的兼容性。

有没有办法指示编译器检查 boost 版本并在版本 >= 1.61 时使用新的头文件包含?

【问题讨论】:

    标签: c++ boost c-preprocessor


    【解决方案1】:

    我认为您正在寻找BOOST_VERSION 预处理器。定义在boost\version.hpp

    // 注意,这是唯一保证的 boost header
    // 随每个增强版本更改,包括此标题
    // 每次有新的 boost 版本时都会导致重新编译
    // 发布。
    //
    // BOOST_VERSION % 100 是补丁级别
    // BOOST_VERSION / 100 % 1000 是次要版本
    // BOOST_VERSION / 100000 是主要版本

    简单的用法是:

    #if BOOST_VERSION >= 106100
    #include <this.hpp>
    #else
    #include <that.hpp> 
    #endif
    

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 2011-01-11
      • 1970-01-01
      • 2011-08-07
      • 2013-03-16
      相关资源
      最近更新 更多