【发布时间】:2011-03-15 15:15:01
【问题描述】:
我需要提交一个作业,但我只想包含我实际使用的 boost 的头文件(我使用了 boost::shared_ptr 和 boost::function)。我尝试手动执行此操作,但我缺少一些头文件,每次我去添加它们时,结果发现我缺少更多。有没有一种快速简便的方法可以准确找出我真正需要的标头?
谢谢
【问题讨论】:
我需要提交一个作业,但我只想包含我实际使用的 boost 的头文件(我使用了 boost::shared_ptr 和 boost::function)。我尝试手动执行此操作,但我缺少一些头文件,每次我去添加它们时,结果发现我缺少更多。有没有一种快速简便的方法可以准确找出我真正需要的标头?
谢谢
【问题讨论】:
bcp 命令是为此而制定的:
名字
bcp - extract subsets of Boost概要
bcp --list [options] module-list bcp [options] module-list output-path bcp --report [options] module-list html-file bcp --help描述
Copies all the files, including dependencies, found in module-list to output-path. output-path must be an existing path.
但是您可能会惊讶地发现这些 Boost 标头是如何相互依赖的。
【讨论】:
libboost1.42-dev 包中获得它。
有一个名为 bcp 的工具可以做到这一点——复制出你需要的 Boost 部分,仅此而已。
【讨论】:
您的问题实际上还有另一种解决方案:预处理器。
您使用的编译器应该有一个只运行预处理器的开关:-E 在 gcc 和 clang 上。鉴于此,您可以预处理您包含的两个文件,并将此运行的结果存储到您自己的头文件(每个)中。
添加标头保护,包括已经预处理的标头代替常规的提升标头,您就完成了。
当然,两个标题之间可能会有一些重复,差异工具可能会帮助您发现它并将其分解到另一个常见的标题中...但是对于分配,我当然不会打扰。
您也可以考虑告诉您的老师,由于他没有要求您提供编译时使用的标准库头文件,因此他不应该要求您提供使用的 boost 头文件。
【讨论】: