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



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

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

为了执行一些单元测试,我需要访问"私有"方法,所以我创建了mylib-private.h我只想包含在测试代码中。
显然,此标头不应是库 API 的一部分,也不应随它一起提供。

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

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

不确定这里的官方推荐模式是什么,但我最终将mylibmylib-tests都包含在同一个包中,然后他们都可以在他们的srcs属性中添加mylib-private

建:

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

相关内容

  • 没有找到相关文章

最新更新