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

Is it possible to share header file only with a cc_test target?

假设我有一个包含单个 cc_library 目标的包和一个包含单个 cc_test 目标的测试内包,如下所示:

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

为了执行一些单元测试,我需要访问 "private" 方法,所以我创建了 mylib-private.h,我只想将其包含在测试代码中。
显然这个头文件不应该是库的一部分 API 并且不应该随它一起提供。

如果我将 mylib-private 添加到 mylibhdrs - 它将对所有人可见。
如果我将 mylib-private 添加到 mylibsrcs - 只有 mylib 可以使用它...

有没有办法控制单个头文件的可见性?

不确定这里官方推荐的模式是什么,但我最终将 mylibmylib-tests 都包含在同一个包中,然后他们都可以将 mylib-private 添加到他们的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"
    ]
)

和结构:

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