Boost C++ 库

...世界上最受推崇和设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

生成库状态表

目的

任何时候,当人们考虑使用像 Boost 库这样大型且复杂的库时,他必须有一种方法来验证库函数在其环境中的有效性。这应该在库安装时完成,并在任何时候对其适用性和/或其用法提出疑问时进行。

这里描述的步骤允许用户对库运行任何测试组合,并生成一组方便的表格,显示在什么条件下运行了哪些测试。

准备工作

生成这些表格需要几个实用程序:b2 用于运行测试本身,以及 library_status 用于处理测试并构建表格。要构建 b2,请查阅 Boost Build 的文档。要构建 library_status,请移动到目录 regression-root/build 并调用 b2。如果一切顺利,library_status 可执行文件可以在 regression-root/stage/bin/library_status 找到。

为一个库运行测试

  1. 从您的命令行环境开始。
  2. 将当前目录设置为:boost-rootlibs/<library name>/test
  3. 调用 library_status
  4. 这将显示简短的帮助消息,描述如何为希望在最终表格中显示的编译器和变体设置命令行参数。
  5. 设置这些参数需要 bjam 用法的基本知识。希望如果您已到达此页面,则在安装和库构建过程中已获得所需的知识。
  6. 使用相应设置的参数重新运行上述命令。
  7. 当命令终止时,当前目录中应该有一个名为 "library_status.html" 的文件。
  8. 用任何 Web 浏览器显示此文件。

应该会出现一个类似于以下正则表达式库的表格。

测试名称 msvc-7.1
调试 发布
静态链接 多线程 静态链接 多线程
多线程 多线程
bad_expression_test 缺失 警告 缺失 警告
捕获 缺失 失败 缺失 失败
captures_test 缺失 警告 缺失 警告
概念检查 缺失 通过 缺失 通过
icu_concept_check 缺失 通过 缺失 通过
object_cache_test 缺失 警告 缺失 警告
posix_api_check 缺失 警告 缺失 警告
posix_api_check_cpp 缺失 通过 缺失 通过
recursion_test 缺失 警告 缺失 警告
regex_config_info 缺失 通过 缺失 通过
regex_dll_config_info 缺失 通过 缺失 通过
regex_regress 通过* 缺失 通过* 缺失
regex_regress_dll 缺失 通过* 缺失 通过*
regex_regress_threaded 缺失 通过 缺失 通过
static_mutex_test 缺失 通过 缺失 通过
test_collate_info 缺失 警告 缺失 警告
unicode_iterator_test 缺失 警告 缺失 警告
wide_posix_api_check_c 缺失 警告 缺失 警告
wide_posix_api_check_cpp 缺失 警告 缺失 警告

此表是通过调用以下命令行生成的

regression-root/stage/bin/library_status --b2 b2 --boost-root=../../.. toolset=msvc-7.1 variant=debug,release

从 boost-root/libs/regex/test 目录内。

此表显示了库的调试和发布版本的正则表达式测试结果。它还显示了其中一个测试是专门使用运行时库的静态链接/多线程版本运行的事实。“缺失”单元格对应于由于某种原因未运行的测试。这通常是因为相应的 Jamfile.v2 为给定的编译器和构建属性组合排除了此测试。在此示例中,所有测试都使用相同的编译器运行。如果使用了其他编译器,它们将作为表格中的更多列出现。

上面的表格只是一个说明,因此链接实际上不指向任何内容。在您生成的表格中,链接将显示一个页面,描述有关测试的任何错误、警告或其他可用信息。如果测试通过,通常没有其他信息,因此没有链接。

表格是累积的。也就是说,如果您现在运行一组测试,稍后运行具有不同属性的测试,则表格将包含迄今为止的所有结果。测试结果存储在 ../bin.v2/libs/test/<library>/... 中。要将测试结果重新初始化为空,请删除此目录中的相应文件。

上述步骤假设表格在目录 ../libs/<library>/test 中生成。这是最常见的情况,因为此目录包含 Jamfile.v2 以及官方 Boost 测试人员使用的源代码。但是,这只是一种约定。表格可以在库中的其他目录中生成。一种可能性是为 ../libs/<library>/example 中的所有示例生成表格。或者,可能有一个特殊的性能测试目录,这些测试需要很长时间才能运行,因此不适合由官方 Boost 测试人员运行。请记住,库状态表是在调用 library_test 命令的目录中生成的。


版权所有 2011 Bryce Lelbach。

版权所有 2007-2011 Robert Ramey。

版权所有 2015 Rene Rivera。

根据 Boost 软件许可协议 1.0 版本分发。(请参阅随附文件 LICENSE_1_0.txt 或 https://boost.ac.cn/LICENSE_1_0.txt)