用Boost.UTF测试Bazel

时间:2017-06-13 22:43:57

标签: c++ bazel boost-test

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

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

欢迎任何提示,谢谢。

P.S。 解决这个问题的唯一方法是尝试在我构建的机器上安装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",],
)

1 个答案:

答案 0 :(得分:1)

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

因此,您的目标是使用所有cc_test集编写deps规则,以便bazel可以编译并运行它。为此,您需要为Boost.UTF添加依赖关系cc_library。这将是cc_libraryhdrs以及srcs(和/或deps)的标准bazel new_

我期待您关于如何依赖本地系统上安装的文件的下一个问题,因为您会发现local_repository(以及它的 // Remove entry from database table database.delete(FAVORITES_TABLE, FAVORITES_ITEM_ID + " = " + soundObject.getItemID(), null); // Refesh current fragment ???????????????????????????????? 变体)非常有用。