使用Boost.UTF进行Bazel测试

Bazel test with Boost.UTF

本文关键字:Bazel 测试 进行 UTF Boost 使用      更新时间:2023-10-16

出于多种原因,我更喜欢Boost.UTF而不是gtest(或其他替代方案(。我最近决定使用 Bazel 作为我的构建系统,由于我基本上处于教程级别,我在网上寻找一种在 Bazel 中使用 Boost 的方法,但它们似乎都没有处理 Boost.UTF,并且由于这个库不仅仅是标头(就像 https://github.com/nelhage/rules_boost 中处理的那些一样(,我不确定如何继续。

如何将 Boost.UTF 添加到 Bazel,以便将其用于我的测试模块?

欢迎任何提示,谢谢。

附言解决我看到的问题的唯一方法是尝试在我构建的机器上安装 boost,并尝试让 Bazel 使用它。我想无论如何,这就是它处理标准库的方式。

编辑:这是我的单元测试的代码。

测试.cpp

#define BOOST_TEST_MODULE CompactStateTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(Suite1)
    BOOST_AUTO_TEST_CASE(Test1)
    {
        int x(0);
        BOOST_CHECK_EQUAL(x, 0);
    }
BOOST_AUTO_TEST_SUITE_END()

BUILD(bazel的"Makefile"(

cc_test(
    name = "btest",
    srcs = ["btest.cpp",],
    deps = ["@boost//:test",],
)

从 bazel(和 cc_test(的角度来看,测试是一个二进制文件,当它失败时返回非零退出代码,可能(不是强制性的(编写一个由测试执行时设置的 env var 指定的 xml 文件XML_OUTPUT_FILE XML 测试结果。

因此,您的目标是编写包含所有depscc_test规则,以便 bazel 可以编译并运行它。为此,您需要为Boost.UTF添加cc_library依赖项。这将是具有hdrssrcs(和/或deps(的标准 bazel cc_library

我期待您下一个关于如何依赖本地系统上安装的文件的问题,因为您会发现local_repository(并且它是new_变体(很有用。