我正在尝试使用Bazel创建Qt资源文件。我创建了一个宏,它接收文件列表并调用Qtrcc
函数来生成相应的cpp文件。为此,我首先需要生成带有相应列表的qrc文件(xml)-因此,我创建了一个精确执行该操作的python二进制文件(generate_qrc
)。我目前面临几个问题:
tools
?我尝试添加,$(location ...)
但是我得到了一个expression is not a declared prerequisite of this rule
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
)
对我来说似乎是一种合理的方法
尝试$(location //third_party:generate_qrc)
在cmd
rcc
可以在另一个中运行genrule
,其中outs
第一个genrule("%s_resource" % name
)可以放在srcs
下一个genrule中。它也可以创建一个sh_binary
和一个shell脚本,完成所有的工作,并运行sh_binary
一个genrule
。只取决于事情变得如何复杂以及对您而言感觉更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句