假设我有一个包含单个cc_library
目标的包和一个用于具有单个cc_test
目标的测试的内部包,如下所示:
mylib/
BUILD
mylib.h
mylib.c
mylib-private.h
tests/
BUILD
test.c
为了执行一些单元测试,我需要访问"私有"方法,所以我创建了mylib-private.h
我只想包含在测试代码中。
显然,此标头不应是库 API 的一部分,也不应随它一起提供。
如果我将mylib-private
添加到mylib
的hdrs
中 - 它将对所有人可见。
如果我将mylib-private
添加到mylib
srcs
- 只有mylib
可以使用它......
有没有办法控制单个头文件的可见性?
不确定这里的官方推荐模式是什么,但我最终将mylib
和mylib-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