首页 > 解决方案 > 确定文件是否是任何包的一部分

问题描述

鉴于我有一个文件列表,例如foo/src/main.cpp, foo/src/bar.cpp, foo/README.md是否可以确定哪些文件是 bazel 包的一部分?在我的示例中,输出将是例如,foo/src/main.cpp, foo/src/bar.cpp因为 README.md 不会是构建的一部分。

做到这一点的一种方法是调用bazel query每个文件并查看它是否会产生输出,但这非常低效,所以我想知道是否有更简单的方法。

背景:我正在尝试确定一组文件中的更改是否会对目标产生影响,并且我想使用它,但是如果其中的任何文件不是 BUILD 文件的一部分,bazel query somepath(//some/target, set($FILES))这将失败。$FILES

标签: bazelbuild-system

解决方案


如何翻转它并查询目标的所有源文件:

bazel query 'kind("source file", deps(//some:target))'

然后检查结果是否有集合中的任何文件


推荐阅读