#bazel
#bazel
Вопрос:
Если я помещу genrule
вывод в a cc_library
, как я могу поместить его в частный путь включения?
Допустим, у меня есть file.c
такой:
#include <config.h>
Вот сценарий сборки, который иллюстрирует проблему:
genrule(
name = "config",
outs = ["config.h"],
cmd = "touch $@",
)
cc_library(
name = "lib",
srcs = [
":config",
"file.c",
],
copts = [
"-isystem",
# <- what goes here?
],
)
Я мог бы использовать includes
, но это было бы унаследовано другими целями, которые мне не нужны.
Фактический путь к выводу genrule будет примерно таким bazel-out/k8-fastbuild/bin/...
, который изменяется в зависимости от конфигурации.
Ответ №1:
Можно использовать $(GENDIR)
«создать переменную» в copts
:
cc_library(
name = "mylib",
copts = ["-I", "$(GENDIR)/path/to/package"],
)
К сожалению, необходимо жестко указать путь к пакету, поскольку $(RULEDIR)
переменная в настоящее время там не поддерживается.