在我的代码库中,将相同的源文件包含在多个目标(cc_binary
,cc_library
等)中通常是错误的。我想发现这个。
我能做到
bazel query labels(srcs, //target:name)
获取单个目标的源列表。这足以足以确定哪些源是多个目标的一部分,通过对每个目标执行此操作并检测哪些源文件位于多个目标中。但我仍然需要一个查询来获取每个目标的列表。
如果我只能查询源文件所属的目标并查看它是否是多个目标的来源,那将会更容易/更清洁。这可能吗?
另外,我有一个很多的源文件,查询的最佳性也是一个问题。
答案 0 :(得分:2)
一些澄清问题:
case 3:
{
if(strcmp(token, "\x97\x97\x97") == 0)
strcpy(registro[i].trecho, NULL);
else
strcpy(registro[i].trecho, token);
break;
}
仅对foo/bar/src.c
中定义的目标可见,然后确保foo/bar/BUILD
仅包含一个foo/bar/BUILD
目标。考虑使用aspects获取给定目标的所有传递源文件的列表。
如果您真正依赖于使用cc_library
,您可以通过调用,例如
bazel query