#bazel
#bazel
Вопрос:
Я хотел бы, чтобы для data
атрибута был дополнительно предоставлен файл, и моя программа могла обрабатывать наличие или отсутствие файла.
Если файл не существует, bazel сообщает missing input file...
cc_binary(
name = "test",
srcs = ["main.c"],
data = [":conf.yml"]
)
Есть ли какой-либо способ сделать его необязательным?
Ответ №1:
Нет. Bazel требует, чтобы все входные данные были объявлены статически для обеспечения герметичности и детерминированности. Дальнейший путь — создать пустой conf.yml
файл и заставить программу определить, является ли он пустым или нет.
Комментарии:
1. есть один способ обойти это: использовать
glob(["conf.yml"])
.glob()
запускается во время загрузки перед анализом, и поэтому он может безопасно ничего не возвращать, если файла там нет. Шаблон включения будет только совпадатьconf.yml
, поэтому он не должен ошибочно совпадать с другими файлами.2. @ahumesky работает как шарм, спасибо! Пожалуйста, сделайте отдельный ответ, если вы хотите, чтобы я его одобрил.