版权 © 2009 John Maddock
根据 Boost 软件许可协议 1.0 版分发。(请参阅随附文件 LICENSE_1_0.txt 或在 https://boost.ac.cn/LICENSE_1_0.txt 复制副本)
bcp 实用程序是一个用于提取 Boost 子集的工具,它对于希望将其库与 Boost 分开分发的 Boost 作者以及希望将其应用程序与 Boost 子集一起分发的 Boost 用户非常有用。
bcp 还可以报告您的代码依赖于 Boost 的哪些部分,以及这些依赖项使用的许可证。
bcp scoped_ptr /foo
复制 boost/scoped_ptr.hpp 和依赖项到 /foo。
bcp boost/regex.hpp /foo
复制 boost/regex.hpp 和所有依赖项,包括 regex 源代码(在 libs/regex/src 中)和构建文件(在 libs/regex/build 中)到 /foo。不复制 regex 文档、测试或示例代码。也不复制 Boost.Build 系统。
bcp regex /foo
复制完整的 regex 库(在 libs/regex 中),包括依赖项(例如 regex 测试程序所需的 boost.test 源代码)到 /foo。不复制 Boost.Build 系统。
bcp --namespace=myboost --namespace-alias regex config build /foo
复制完整的 regex 库(在 libs/regex 中)加上 config 库(libs/config)和构建系统(tools/build)到 /foo,包括所有依赖项。还将 boost 命名空间重命名为 myboost,并将二进制库的文件名更改为以 "myboost" 而不是 "boost" 为前缀。“--namespace-alias”选项使 namespace boost
成为新名称的别名。
bcp --scan --boost=/boost foo.cpp bar.cpp boost
扫描 [非 boost] 文件 foo.cpp 和 bar.cpp 中的 boost 依赖项,并将这些依赖项复制到子目录 boost。
bcp --report regex.hpp boost-regex-report.html
为 boost 模块 regex.hpp 创建一个名为 boost-regex-report.html 的 HTML 报告。该报告包含许可证信息、作者详细信息和文件依赖项。
bcp --list [options] module-list
输出模块列表(module-list)中所有文件(包括依赖项)的列表。
bcp [options] module-list output-path
将模块列表(module-list)中找到的所有文件复制到输出路径(output-path)
bcp --report [options] module-list html-file
输出一个包含以下内容的 html 报告文件
当未使用 --scan 选项时,要复制的 boost 文件或库名称的列表,可以是
当使用 --scan 选项时,要扫描 boost 依赖项的(可能非 boost)文件列表,因此模块列表中的文件不会被复制/列出。
文件将被复制到的路径(此路径必须存在)。
文件依赖项按如下方式查找
应该注意的是,实际上 bcp 可能会生成相当“臃肿”的依赖项列表,原因包括
上面的最后一点可能会导致找到的标头数量大大超出大多数人的预期。例如,bcp 为 boost/shared_ptr.hpp 找到了 274 个标头依赖项:通过在报告模式下运行 bcp,我们可以看到为什么所有这些标头都被发现为依赖项
如您所见,找到的依赖项数量远大于任何单个编译器使用的数量,但是,如果您想分发一个 Boost 子集,该子集可在任何配置、任何编译器、任何平台上使用,那么这正是您所需要的。如果您想找出您的特定编译器正在使用哪些 Boost 标头,那么最好的方法是预处理代码并扫描输出以查找 boost 标头包含。您应该意识到,结果将非常特定于平台和编译器,并且如果您更改编译器开关(例如启用线程支持),则可能不包含所有需要的标头。
上次修订时间:2013 年 4 月 18 日,格林威治标准时间 12:30:13 |