如何获取Bazel执行的命令

时间:2015-11-29 14:09:33

标签: command bazel

我想知道是否有办法让Bazel列出,输出,显示等所有可以从命令行执行的命令,这些命令在清理后的构建期间运行。我不在乎输出是否在屏幕上,文件中等等。如果需要,我会将其按到可用的形式。

我在Bazel运行期间捕获了屏幕输出,这让我知道正在做什么,但给我一个命令,我可以在命令行上执行。该命令必须包含所有命令选项而不是显示变量。

如果这是不可能的,因为Bazel是开源的,代码中的代码是代表要运行的命令的行,这样我就可以修改Bazel来输出可执行命令。

我知道Bazel中的查询命令,并使用它生成依赖关系图。如果这可以作为查询命令完成,那就更好了。

TLDR;

我的目标是在Windows上使用Bazel构建TensorFlow。是的我知道所有问题和原因没有这样做,并且通过虚拟机或Docker在Windows上成功安装了TensorFlow。我开始尝试用Cygwin开始在Windows上构建Bazel,但是由于我用于安装软件包并且Cygwin不能使用软件包,因此开始失控,因此我开始尝试构建Bazel手工,这变成了一个泥潭。因此,我现在试图在Windows上手动构建TensorFlow,复制Bazel在Linux上构建TensorFlow的工作。

2 个答案:

答案 0 :(得分:18)

您是对的,您可以使用-s--subcommands)选项:

bazel build -s //foo

请参阅https://docs.bazel.build/versions/master/user-manual.html#flag--subcommands

对于您的用例,您可能希望将输出重定向到文件,然后将所有库/二进制路径全局替换为Windows等效项。

您可能希望跟踪https://github.com/bazelbuild/bazel/issues/276(Windows支持),但可能需要一段时间。

答案 1 :(得分:1)

我会使用aquery

bazel aquery //foo

这非常快,因为它无需执行构建即可打印动作。而且您不必先做bazel clean