gpt4 book ai didi

c++ - 使用Bazel编译QT应用程序时访问资源

转载 作者:行者123 更新时间:2023-12-02 10:21:26 28 4
gpt4 key购买 nike

我正在使用Bazel编译使用Qrc文件中定义的着色器的Qt应用程序(https://github.com/bbreslauer/qt-bazel-example)。
当我尝试访问资源文件时,它不可用(因为我没有将qrc文件连接到编译文件)。
如何在构建中定义qrc文件内容?

更新

按照@ypnos的响应,我正在尝试向我的qt.bzl文件添加一个宏。我希望宏将文件列表作为参数接收,创建(临时)qrc文件,然后运行rcc命令。
我目前正在努力:

  • 在bzl文件中运行python脚本并不像我那样简单。它无法生成文件(“open”未定义)。可能吗?如果是,如何(请参见下面的示例)
  • 即使有给定的qrc文件,我也无法使命令正常工作,我想我在命令行参数方面做得有些不对,但是我找不到
  • 的引用/手册

    这是到目前为止我得到的(我的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
    )

    最佳答案

    似乎您使用的bazel示例不支持qrc(仅支持moc和ui文件)。 1

    需要使用rcc将QRC文件转换为C++源代码,然后进行编译。 2这个概念类似于.ui文件之一,后者被转换为 header 。

    也许您可以修补qt.bzl以添加该功能。

    关于c++ - 使用Bazel编译QT应用程序时访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59939416/

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