c++ - 使用 Boost.UTF 进行 Bazel 测试

标签 c++ bazel boost-test

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

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

欢迎任何提示,谢谢。

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

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

btest.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)的角度来看,测试是一个二进制文件,它在失败时返回非零退出代码,可能(不是强制性的)写入由 XML_OUTPUT_FILE 指定的 xml 文件在测试执行时设置的 env var 和 xml 测试结果。

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

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

关于c++ - 使用 Boost.UTF 进行 Bazel 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44532741/

相关文章:

Bazel-如何递归地全局删除 deleted_pa​​ckages 以忽略 Maven 输出?

具有不同参数的派生类中的 C++ 方法

c++ - 如何在 C++ 中计算非常大的数字

c++ - 在 Bazel 中显示编译器信息

go - 巴泽尔去嵌入数据 "could not embed"

c++ - Boost 测试框架是否支持测试依赖?

c++ - 应用程序中奇怪的执行错误

c++ - Boost.Test - 问题覆盖主要

c++ - 函数查找和命名空间

c++ - 为什么编译器不提示错误的枚举值