Я пытаюсь создать файл ресурсов Qt, используя Bazel. Я создал макрос, который получает список файлов и вызывает функцию Qt rcc
для генерации соответствующего файла cpp. Для этого мне сначала нужно сгенерировать файл qr c (xml) с соответствующим списком - поэтому я создал двоичный файл python, который делает именно это (generate_qrc
). Я в настоящее время сталкиваюсь с парой вопросов:
- это лучший способ сделать это? Google не привел ни одного полезного варианта использования, но я уверен, что я не первый
- По какой-то причине исполняемый файл python не найден, нужно ли мне определять его, кроме добавления в
tools
? Я попытался добавить $(location ...)
, но я получил expression is not a declared prerequisite of this rule
- Как я могу выполнить две команды (мою python двоичную +
rcc
) одну за другой? {}
?
Спасибо!
qt.bzl:
def qt_resource(name,file_list, **kwargs):
native.genrule(
name = "%s_resource" % name,
srcs=["%s.qrc"%name]+file_list,
outs = ["rcc_%s.cpp" % name],
# cmd = "rcc %s/%s.qrc -o $@"%(native.package_name(),name) ,
cmd="generate_qrc file_list.qrc %s"%','.join(file_list),
tools=["//third_party:generate_qrc"]
)
srcs = [":rcc_%s.cpp" % name]
native.cc_library(
name = name,
srcs = srcs,
hdrs = [],
deps = [],
**kwargs
)