我希望启用代码的某些部分,只有安装了boost。
我找到this回答,this回答。但是,它们用于确定boost的版本。
那么这样的事情会完全安全吗?
#if BOOST_VERSION
// boost code
#endif
如果没有,我应该怎么做?
答案 0 :(得分:4)
您需要创建自己的宏来进行条件编译(或者使用您的构建系统以某种方式控制它)。例如:
#ifdef MYPROJ_HAS_BOOST
# include <boost/filesystem.hpp>
#endif
然后用-DMYPROJ_HAS_BOOST
(或不是)编译。
你不能依赖BOOST_VERSION
或其他来自Boost的东西,因为你不知道你是否有Boost。您可以在没有Boost的系统上创建一个假的<boost/version.hpp>
头文件,但这有点奇怪,并且没有比制作自己的项目特定的宏更好。
有些编译器会让你#include <boost/version.hpp
,只会在没有找到时发出警告;这可能有用,但会在没有Boost的系统上发出危险的警告,甚至可能彻底失败。