说我有一个带有单个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
可以使用...
是否可以控制单个头文件的可见性?
答案 0 :(得分:0)
不确定此处官方推荐的模式是什么,但是我最终将mylib
和mylib-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"
]
)