如何根据升级版本选择性地包含升压头

时间:2017-11-20 09:36:48

标签: c++ boost c-preprocessor

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版本,如果版本&gt; = 1.61,则使用新的header include

1 个答案:

答案 0 :(得分:4)

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

中定义
  

//注意,这是唯一一个保证的升级头   //随每个提升版本改变,包括此标题
  //每次新的升级版本时都会重新编译   //释放。
  //
  // BOOST_VERSION%100是补丁级别
  // BOOST_VERSION / 100%1000是次要版本
  // BOOST_VERSION / 100000是主要版本

简单的用法是:

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