使用 Bazel 编译 QT 应用程序时访问资源
accessing recources when compiling QT application with Bazel
我正在使用Bazel编译一个Qt应用程序(https://github.com/bbreslauer/qt-bazel-example(,该应用程序使用qrc文件中定义的着色器。 当我尝试访问资源文件时,它不可用(因为我没有将 qrc 文件连接到编译(。 如何在构建中定义 qrc 文件内容?
更新
根据@ypnos的响应,我正在尝试向我的qt.bzl文件添加一个宏。我希望宏接收文件列表作为参数,创建(临时(qrc 文件,然后运行 rcc 命令。 我目前正在为以下问题而苦苦挣扎:
- 在 bzl 文件中运行 python 脚本并不像我那么简单。它无法生成文件("打开"未定义(。可能吗?如果是,如何(见下面的示例(
- 即使使用给定的 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("tt<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 文件(。
QRC 文件需要使用rcc
转换为C++源,然后进行编译.2 该概念类似于转换为标头的 .ui 文件之一。
也许您可以修补qt.bzl
以添加该功能。
相关文章:
- 使用 Bazel 编译 QT 应用程序时访问资源
- 从资源视图访问对话框时出现问题
- 按基类对象访问派生类资源时出错
- 循环访问资源字符串表
- 如何在不设置完整路径的情况下访问 c++ 中的资源
- 根据线程优先级/特权授予对资源的访问权限
- 多个线程访问共享资源
- 如何创建一个随机访问式的Rreference以访问.RC文件中定义的资源
- 从 Android 上的 Unity 中的 C++ DLL 访问 StreamingAssets 资源
- C++无法访问父媒体资源的子媒体资源
- 使用户无法访问资源
- Xcode访问c++中的资源
- QT 5.4,无法从代码访问资源
- 如何访问RCDATA资源的元素
- 如何使用Windows Native API访问PE资源
- scoped_lock访问资源的优雅模式
- CUDA 多线程:__threadfence不会阻止多个线程访问资源
- 如何在 Visual Studio 中运行应用时访问资源
- Android,从本地/NDK共享库访问资源文件
- 从Debian包结构中的程序中访问资源