首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何找到包含在多个bazel目标中的所有源文件?

如何找到包含在多个bazel目标中的所有源文件?
EN

Stack Overflow用户
提问于 2018-06-14 03:56:31
回答 1查看 795关注 0票数 2

在我的代码库中,在多个目标(cc_binarycc_library等)中包含相同的源文件通常是错误的。我想要检测到这个。

我能做到

代码语言:javascript
复制
bazel query labels(srcs, //target:name)

获取单个目标的源列表。这足以找出哪些源是多个目标的一部分,通过对每个目标执行此操作,并检测哪些源文件位于多个目标中。但我仍然需要一个查询来得到每个目标的列表。

如果我能简单地查询源文件属于哪个目标,看看它是否是多个目标的源,那会容易得多。这有可能吗?

另外,我有很多源文件,查询的优化性也是一个问题。

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 05:11:43

以下是几个澄清问题:

  • 您希望检测这种情况的频率是多少?
  • 如果两个不相关的目标A和B都依赖于文件foo,即使A不依赖于B,B也不依赖于A,它是否被认为是错误的?
  • 将src可见性限制到在同一个包中定义的目标是否不够?例如,考虑确保foo/bar/src.c仅对foo/bar/BUILD中定义的目标可见,然后确保foo/bar/BUILD仅包含一个cc_library目标。

考虑使用aspects获取给定目标的所有可传递源文件的列表。

如果您确实依赖于使用bazel query,则可以通过调用以下命令来获得项目下每个目标的全面列表,例如,

代码语言:javascript
复制
bazel query //...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50845271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档