是否有Bazel命令行来确定一个或多个给定标签的输出的绝对路径?
我知道有是否有Bazel命令行来确定一个或多个给定标签的输出的绝对路径?,bazel,Bazel,我知道有bazel info bazel bin,但这只是给出了输出路径前缀。我希望通过一些奇特的cquery或aquery来获得输出的完整路径。据我所知,没有一种简单的方法可以实现这一点(请参见下面的相关讨论),但如果您的目标是可运行的,您可以使用以下技巧: bazel run——在“echo”//path/to/folder:target下运行 这将打印磁盘上二进制文件的完整路径(在bazel缓存文件夹中) 获取目标的输出路径的更通用方法是通过aquery,例如 bazel aquery”
bazel info bazel bin
,但这只是给出了输出路径前缀。我希望通过一些奇特的cquery
或aquery
来获得输出的完整路径。据我所知,没有一种简单的方法可以实现这一点(请参见下面的相关讨论),但如果您的目标是可运行的,您可以使用以下技巧:
bazel run——在“echo”//path/to/folder:target下运行
这将打印磁盘上二进制文件的完整路径(在bazel缓存文件夹中)
获取目标的输出路径的更通用方法是通过aquery
,例如
bazel aquery”//path/to/folder:target”--noinclude\u命令行--output=text
这将打印与给定目标相关的所有操作的输出(对于cc_二进制文件
,这些操作将包括对象文件、二进制文件、剥离二进制文件等)-然后您可以grep foroutputs
并提取路径
这是cc\u二进制文件的示例输出:
>bazel aquery”//path/to/folder:target”--noinclude\u命令行--output=text
操作“编译路径/to/folder/main.cc”
助记符:cppcile
Target://path/to/folder:Target
配置:k8fastbuild
操作键:。。。
输入:[……,路径/to/folder/main.cc]
输出:[bazel out/k8 fastbuild/bin/path/to/folder/_objs/target/main.pic.d,
bazel out/k8 fastbuild/bin/path/to/folder/_objs/target/main.pic.o]
...
操作“链接路径/到/文件夹/目标”
助记符:CppLink
Target://path/to/folder:Target
配置:k8fastbuild
操作键:。。。
输入:[…,bazel out/k8 fastbuild/bin/path/to/folder/_objs/target/main.pic.o,…]
输出:[bazel out/k8 fastbuild/bin/path/to/folder/target]
操作“为//path/to/folder:target剥离路径/to/folder/target.stripped”
助记符:CcStrip
Target://path/to/folder:Target
配置:k8fastbuild
操作键:。。。
输入:[……,bazel out/k8 fastbuild/bin/path/to/folder/target]
输出:[bazel out/k8 fastbuild/bin/path/to/folder/target.stripped]
...
...
...
路径是相对的,但您可以通过使用bazel info workspace
获取工作区文件夹来解析它们
如果您对特定操作的输出感兴趣,例如链接产生的最终二进制文件,您可以按助记符类型进行筛选:
bazel aquery“助记符(CppLink,//path/to/folder:target)”--noinclude\u命令行--output=text
操作“链接路径/到/文件夹/目标”
助记符:CppLink
Target://path/to/folder:Target
配置:k8fastbuild
操作键:。。。
输入:[…,bazel out/k8 fastbuild/bin/path/to/folder/_objs/target/target.pic.o,…]
输出:[bazel out/k8 fastbuild/bin/path/to/folder/target]
不是一个完整的答案,但希望这有帮助
其他相关讨论: