我想有条件地编译一些使用boost的c++代码,并使其生成,以便在没有boost的情况下不会尝试编译与boost相关的代码。

boost是否可以定义任何可以定义的全局宏,例如__BOOST__

编辑:我现在很清楚,我必须在makefile级别上实现这一目标。我正在研究OSX Lion。使用gnu make

最佳答案

完成此操作的典型方式是使用“配置脚本”或类似内容,该脚本可检测是否存在所需的/可选的组件,然后有选择地为构建系统设置一些-D选项。

显然,如果只是您自己的项目或较小的发行版,则可以手动执行相同的操作。

如果有需要的库文件,则可能在Makefile中还需要几个ifdef类型的选择。

确定是否安装了需要的Boost的一种较简单的方法是尝试对其进行编译。如果存在错误,则可能的原因是boost的那一部分不存在(如果缺少更重要的部分,这显然不起作用-例如,未安装编译器或标准库也将导致编译为这就是为什么几乎所有配置类型工具“都从最基本的功能开始,然后沿依存关系树向上发展”的原因。

09-09 23:24
查看更多