Я использую Bazel для компиляции приложения Qt (https://github.com/bbreslauer/qt-bazel-example), которое использует шейдеры, определенные в файле qr c. Когда я пытаюсь получить доступ к файлу ресурса, он недоступен (так как я не подключил файл qr c к компиляции). Как определить содержимое файла qr c в сборке?
UPDATE
после ответа @ypnos, я пытаюсь добавить макрос в мой файл qt.bzl. Я хотел бы, чтобы макрос получил список файлов в качестве аргумента, создал (временный) файл qr c и выполнил команду r cc. В настоящее время я борюсь с:
- Запуск сценария python в файле bzl не так просто, как я. Он не может сгенерировать файл («открыть» не определено). Является ли это возможным? если да, то как (см. пример ниже)
- даже с данным файлом qr c, я не могу заставить команду работать, я думаю, что-то не так с аргументами командной строки, но я не могу найти ссылку / руководство для этого
это то, что я получил до сих пор (мой файл qt.bzl)
...
def qt_resource(name,file_list, **kwargs):
## following doesnt work inside the bzl file:
# fid = open('%s.qrc' % name, 'w')
# fid.write("<RCC>\n")
# fid.write("\t<qresource prefix=\"/%s\">\n" % name)
# for x in file_list:
# fid.write("\t\t<file>%s</file>\n" % x)
# fid.write("\t</qresource>\n")
# fid.write("</RCC>\n")
# fid.close()
native.genrule(
name = "%s_res" % name,
outs = ["rcc_%s.cpp" % name],
cmd = "rcc %s.qrc -o $@/rcc_%s.cpp"%(name,name) ,
)
srcs = [":rcc_%s.cpp" % name]
native.cc_library(
name = name,
srcs = srcs,
hdrs = [],
deps = [],
**kwargs
)