我想有条件地编译一些使用 boost 的 C++ 代码,并使其在 boost 不存在时不会尝试编译依赖于 boost 的代码。
boost 是否有任何可以定义的全局宏(例如 __BOOST__
)可供我检查?
编辑:现在我很清楚我必须在 makefile 级别上实现这一目标。我正在开发 OSX lion。使用 gnu make
最佳答案
完成此操作的典型方法是使用“配置脚本”或类似脚本,检测是否存在必需/可选组件,然后有选择地为构建系统设置一些 -D 选项。
显然,如果这只是您自己的项目或小型发行版,您可以手动执行相同的操作。
如果有您需要的库文件,您可能还需要在 Makefile 中进行一些 ifdef
类型的选择。
确定您需要的 boost 部分是否已安装的更简单方法之一是尝试编译它。如果出现错误,可能的原因是 boost 的该部分不存在(如果缺少更重要的部分,这显然不起作用 - 例如,没有安装编译器或标准库也会导致编译为这就是为什么几乎所有配置类型工具“都从最基本的功能开始,然后沿着依赖关系树向上工作”)。
关于c++ - 如果存在 boost 则有条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18804030/