是否可以仅与cc_test目标共享头文件?

时间:2019-01-24 19:51:11

标签: unit-testing header-files bazel build-system

说我有一个带有单个cc_library目标的软件包,以及一个带有单个cc_test目标的测试的内部软件包,如下所示:

mylib/
     BUILD
     mylib.h
     mylib.c
     mylib-private.h
     tests/
         BUILD
         test.c

为了执行某些单元测试,我需要访问“私有”方法,因此我创建了mylib-private.h,我只想将其包括在测试代码中。
显然,此标头不应成为库API的一部分,也不应随其一起提供。

如果我将mylib-private添加到hdrs的{​​{1}}中,则所有人都可以看到。
如果我将mylib添加到mylib-private的{​​{1}}中-只有srcs可以使用...

是否可以控制单个头文件的可见性?

1 个答案:

答案 0 :(得分:0)

不确定此处官方推荐的模式是什么,但是我最终将mylibmylib-tests包含在同一软件包中,然后他们都可以将mylib-private添加到他们的{{ 1}}属性:

已建立:

srcs

结构:

cc_library(
    name="mylib",
    hdrs=["mylib.h",],
    srcs=[
        "mylib.c",
        "mylib-private.h"
    ]
)

cc_test(
    name="mylib-tests",
    srcs=glob([
        "tests/*.c",
        "mylib-private.h"
    ]),
    deps=[
        "//:mylib"
    ]
)