доступ к ресурсам при компиляции приложения QT с Bazel - PullRequest
1 голос
/ 28 января 2020

Я использую Bazel для компиляции приложения Qt (https://github.com/bbreslauer/qt-bazel-example), которое использует шейдеры, определенные в файле qr c. Когда я пытаюсь получить доступ к файлу ресурса, он недоступен (так как я не подключил файл qr c к компиляции). Как определить содержимое файла qr c в сборке?

UPDATE

после ответа @ypnos, я пытаюсь добавить макрос в мой файл qt.bzl. Я хотел бы, чтобы макрос получил список файлов в качестве аргумента, создал (временный) файл qr c и выполнил команду r cc. В настоящее время я борюсь с:

  1. Запуск сценария python в файле bzl не так просто, как я. Он не может сгенерировать файл («открыть» не определено). Является ли это возможным? если да, то как (см. пример ниже)
  2. даже с данным файлом 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
  )

1 Ответ

1 голос
/ 28 января 2020

Кажется, что используемый вами базальный пример не поддерживает qr c (он работает только с файлами mo c и ui). 1

QR * Файлы 1014 * необходимо преобразовать в источники C ++ с использованием rcc, а затем скомпилировать. 2 Концепция аналогична одной из файлов .ui, которые преобразуются в заголовки.

Может быть, вы можете добавить qt.bzl для добавления этой функциональности.

...