Можно ли поделиться заголовочным файлом только с целью cc_test? - PullRequest
0 голосов
/ 24 января 2019

Допустим, у меня есть пакет с одной целью cc_library и внутренний пакет для тестов с одной целью cc_test:

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

Для выполнения некоторых юнит-тестов мне нужен доступ к "приватным" методам, поэтому я создал mylib-private.h, который хочу включить только в код теста.
Очевидно, этот заголовок не должен быть частью API библиотеки и не должен поставляться с ним.

Если я добавлю mylib-private к hdrs из mylib - это будет видно всем.
Если я добавлю mylib-private к srcs из mylib - только mylib сможет использовать его ...

Есть ли способ управления видимостью одного заголовочного файла?

1 Ответ

0 голосов
/ 24 января 2019

Не уверен, что здесь является официальным рекомендуемым шаблоном, но в итоге я включил mylib и mylib-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
...