4

我正在编写一个小程序,boost/program_options用于处理来自命令行的选项。现在我想将我的代码分发到通常没有安装 Boost 的系统。所以我使用了该bcp实用程序。example/first.cpp我在program_options 教程中调用的 Boost 示例中进行了尝试:

bcp --scan --boost=/users2/xxx/boost_1_45_0 ~/prova/first.cpp dest

它创建一个dest包含大量文件.hpp.cpp目录。我想这就是我需要的,仅此而已。对吗?因为:

du -hs dest
37M dest

37M是不是太多了?例如,我可以使用test_optparse.py只有 61KB 的 Python 来做同样的事情。

难道我做错了什么?关键是我的源程序只有4MB;我无法添加 37MB 的第三方内容!!

4

1 回答 1

3

Boost.Documentation对此主题的解释比我能提供的要多。最为显着地 :

应该注意的是,实际上 bcp 可以产生一个相当“胖”的依赖列表,原因包括:

[...]

  • 当您包含标头时,bcp不知道您正在使用什么编译器,因此它遵循所有可能的预处理器路径。如果您正在与您的应用程序一起分发 Boost 的子集,那么这就是您通常希望发生的事情。

与大多数人的预期相比,上述最后一点可能会导致发现的标头数量大幅增加。例如,bcp 为 boost/shared_ptr.hpp 找到 274 个标头依赖项:通过在报告模式下运行 bcp,我们可以看到为什么所有这些标头都被发现为依赖项

我建议您尝试bcp --report检查包含每个文件的原因,看看是否真的有必要。

于 2010-12-27T14:42:38.467 回答