如何在 bazel 中指定 cc_library 的输出工件?

2024-02-07

我想将“foo.c”构建为库,然后在生成的.so上执行“readelf”而不是“.a”,我如何在bazel中编写它?

以下 BUILD.bazel 文件不起作用:

cc_library(
    name = "foo",
    srcs = ["foo.c"],
)

genrule(
    name = "readelf_foo",
    srcs = ["libfoo.so"],
    outs = ["readelf_foo.txt"],
    cmd = "readelf -a $(SRCS) > $@",
)

错误是“缺少输入文件'//:libfoo.so'”。

将 genrule 的 srcs 属性更改为“:foo”会将“.a”和“.so”文件传递给 readelf,这不是我需要的。

有没有办法指定“:foo”的哪个输出传递给genrule?


cc_library产生多个输出,这些输出由输出组分隔。如果您只想获得 .so 输出,您可以使用filegroup with dynamic_library输出组。

所以,这应该有效:

cc_library(
    name = "foo",
    srcs = ["foo.c"],
)


filegroup(
    name='libfoo',
    srcs=[':foo'],
    output_group = 'dynamic_library'
)

genrule(
    name = "readelf_foo",
    srcs = [":libfoo"],
    outs = ["readelf_foo.txt"],
    cmd = "readelf -a $(SRCS) > $@",
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 bazel 中指定 cc_library 的输出工件? 的相关文章

随机推荐

  • 是否有一个 JavaScript 引擎可以让我运行我的代码而不必被迫使用浏览器?

    有没有什么方法可以编写和运行 JavaScript 代码 而无需运行浏览器并使用其 JavaScript 引擎 Thanks 我很惊讶还没有人指出这一点 Windows 包含一个可以从命令行使用的 Javascript 引擎 自 Windo
  • 如何让 gitlab-ci-runner DinD 图像缓存中间图像?

    我有一个 Dockerfile 从安装 texlive full 包开始 该包很大并且需要很长时间 如果我docker build它在本地 安装后创建的中间映像会被缓存 后续构建速度很快 但是 如果我推送到我自己的 GitLab 安装并且
  • android listview onItemClickListener 失败

    我使用以下代码来侦听我的列表视图 onItemClick 事件 没有发生编译错误 当我点击任何列表项时什么也没有发生 我不知道为什么Orz 有人能告诉我为什么 吗 mp3 listView setOnItemClickListener ne
  • 填充 NSString 不起作用

    我已阅读该内容以向左填充NSString你需要做的就是这样 NSString paddedStr NSString stringWithFormat 20 20 20 20 aString anotherSting 但是 那是行不通的 我不
  • SwiftUI 中可选数据类型的选择器?

    通常我可以在 SwiftUI 中显示这样的项目列表 enum Fruit case apple case orange case banana struct FruitView View State private var fruit Fr
  • 让 nokogiri 使用较新版本的 libxml2

    我一直试图在我的计算机 Mountain Lion 上安装 Nokogiri 以与 rspec 和 capybara 一起使用 但对于我来说 我无法让它正常运行 据我所知 问题在于 nokogiri 使用了错误版本的 libxml2 到目前
  • 如何在android中以编程方式打开文件夹?

    我正在开发一个打开文件夹的Android应用程序 我的问题是如何在 Android 中以编程方式打开文件夹 我尝试了 stack overflow 中提供的所有解决方案并在 Google 中搜索 但找不到解决方案 有人可以给我答案吗 提前致
  • Wifi 睡眠,即使有锁

    总结 即使获取了wifi锁 当手机使用电池运行时 wifi也会在一段时间后断开 我已将问题简化为带有启动线程的按钮的单个活动 它只是向 PC 上运行的回显服务器发送 100 000 个字符串 每 100 毫秒一个字符串 请参阅下面的代码 我
  • 在 JavaScript 中从表格单元格获取值...而不是 jQuery

    我不敢相信这花了我多长时间 但当我使用 JavaScript 迭代表格时 我似乎无法弄清楚如何从 HTML 表格中提取单元格值 我正在使用以下内容进行迭代 var refTab document getElementById ddRefer
  • Android (Lollipop) EditText onFocus 多次触发

    我有几个带有 onFocusChangeListener 的 EditText When the field gains or loses focus txtMinimumValue setOnFocusChangeListener new
  • 可以在C++中使用正则表达式吗?

    重复 C 中有一个使用模式匹配 使用正则表达式 的函数吗 https stackoverflow com questions 329517 there is a function to use pattern matching using
  • 将函数动态应用到 Postgres 表中的所有列

    使用 Postgres 13 1 我想对表的所有列应用前向填充函数 前向填充函数在我之前的问题中进行了解释 如何将前向填充作为 PL PGSQL 函数 https stackoverflow com questions 70987689 h
  • 创建应用程序域并加载程序集

    我想创建一个具有默认权限的应用程序域 并以默认权限将程序集加载到应用程序域中 并执行程序集中的方法 你可以看看以下文章 http msdn microsoft com en us library ms173139 aspx在 MSDN 上
  • F#,在不使用临时变量的情况下通过管道转发匹配情况

    我想在不使用临时变量或 lambda 的情况下将变量通过管道转发到匹配情况 想法 let temp x gt Function1 gt Function2 Many functions later gt FunctionN let resu
  • 在 Gradle 中定义不依赖的任务顺序?

    Question 当两个任务都被执行时 我能否以某种方式确保一个任务将在另一个任务之前 之后执行 我don t想要在它们之间添加始终存在的依赖关系 背景 我有两项任务 一项任务启动服务器 另一项任务对其运行测试 启动该服务器的任务在一个新进
  • 以编程方式快速向工具栏添加按钮

    我很难快速地向工具栏添加一个按钮 下面你可以看到我想要的工具栏的图像 不幸的是 即使我在故事板文件中设计了它 它也不会显示在将工具栏设置为可见 我设计的方式有两个项目 第一个是flexable space元素 第二个是add元素 它看起来像
  • HttpServletRequest#getRemoteAddr() 返回 NULL

    为什么HttpServletRequest getRemoteAddr http docs oracle com javaee 6 api javax servlet ServletRequest html getRemoteAddr 28
  • 大矩阵计算

    我用 C 编写了一个简单的代码 然后在 linux ubuntu 11 04 上用 g 编译它 没有收到任何错误 但是当我运行可执行文件时 收到此错误 分段错误 我知道我的代码没有问题 并且这个错误与编译器有关 有人可以帮助我吗 我的代码是
  • RTMP:有这样的linux命令行工具吗?

    我到处寻找一个可以让我下载 rtmp 流的 Linux 实用程序 不是 flv 视频而是 MP3 流 我想要下载的流的位置就是这种格式 rtmp live site com loc 45 std fc74a6b7f79c70a5f60 mp
  • 如何在 bazel 中指定 cc_library 的输出工件?

    我想将 foo c 构建为库 然后在生成的 so上执行 readelf 而不是 a 我如何在bazel中编写它 以下 BUILD bazel 文件不起作用 cc library name foo srcs foo c genrule nam