使用Bazel生成QT资源文件

我正在尝试使用Bazel创建Qt资源文件。我创建了一个宏,它接收文件列表并调用Qtrcc函数来生成相应的cpp文件。为此,我首先需要生成带有相应列表的qrc文件(xml)-因此,我创建了一个精确执行该操作的python二进制文件(generate_qrc)。我目前面临几个问题:

  1. 这是最好的方法吗?Google没有产生任何有用的用例,但我敢肯定我不是第一个用例
  2. 由于某种原因,找不到python可执行文件,除了将其添加到之外,是否还需要定义它tools我尝试添加,$(location ...)但是我得到了一个expression is not a declared prerequisite of this rule
  3. 我如何rcc一个接一个地运行两个命令(我的python binary + )?{}

谢谢!

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
  )
阿赫梅斯基
  1. 对我来说似乎是一种合理的方法

  2. 尝试$(location //third_party:generate_qrc)cmd

  3. rcc可以在另一个中运行genrule,其中outs第一个genrule("%s_resource" % name)可以放在srcs一个genrule它也可以创建一个sh_binary和一个shell脚本,完成所有的工作,并运行sh_binary一个genrule只取决于事情变得如何复杂以及对您而言感觉更好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章