出于多种原因,我更喜欢 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
的依赖。这将是带有 hdrs
和 srcs
(和/或 deps
)的标准 bazel cc_library
。
我期待您的下一个问题,即如何依赖安装在本地系统上的文件,为此您会发现 local_repository (它是 new_
变体)很有用。
关于c++ - 使用 Boost.UTF 进行 Bazel 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44532741/