gpt4 book ai didi

c++ - 使用Bazel生成QT资源文件

转载 作者:行者123 更新时间:2023-12-02 10:06:19 25 4
gpt4 key购买 nike

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

  • 是做到这一点的最佳方法吗? Google没有产生任何有用的用例,但我敢肯定我不是第一个
  • 出于某种原因,找不到python可执行文件,除了在tools中添加它之外,是否还需要定义它?我尝试添加$(location ...),但得到了expression is not a declared prerequisite of this rule
  • 如何依次运行两个命令(我的python binary + 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
    )

    最佳答案

  • 对我来说似乎是一种合理的方法
  • 尝试$(location //third_party:generate_qrc)中的cmd
  • rcc可以在另一个genrule中运行,其中第一个类别的outs("%s_resource" % name)可以放在下一个类别的srcs中。也可以创建一个sh_binary和一个完成所有工作的shell脚本,然后在sh_binary中运行该genrule。只取决于事情变得如何复杂以及对您而言感觉更好。
  • 关于c++ - 使用Bazel生成QT资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60047603/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com