Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何查找bazel目标生成的可执行文件_Bazel - Fatal编程技术网

如何查找bazel目标生成的可执行文件

如何查找bazel目标生成的可执行文件,bazel,Bazel,我试图bazel运行//foo,而不获取构建步骤中输出的所有信息行。跟踪此功能请求,但尚未实现。为了实现这一点并使其独立于平台,我一直在尝试找到一个bazel query/aquery/cquery命令,该命令告诉我bazel目标生成的可执行文件(基本上是bazel run//foo应该运行的任何东西) 我的工作是编写一个bash脚本,调用buildout=$(bazel build//$target--color=yes 2>&1),然后在build命令成功退出时直接运行可执行文件。我已经对各

我试图
bazel运行//foo
,而不获取构建步骤中输出的所有信息行。跟踪此功能请求,但尚未实现。为了实现这一点并使其独立于平台,我一直在尝试找到一个
bazel query/aquery/cquery
命令,该命令告诉我bazel目标生成的可执行文件(基本上是
bazel run//foo
应该运行的任何东西)

我的工作是编写一个bash脚本,调用
buildout=$(bazel build//$target--color=yes 2>&1)
,然后在build命令成功退出时直接运行可执行文件。我已经对各种查询命令进行了大量的研究,但是还没有找到一种通用的方法来实现这一点。我得到的最接近的结果是在
bazel aquery//foo
的输出上运行正则表达式来查找输出行

是否有更好的工具用于此作业或特定的查询命令可以告诉我这一点


谢谢

这不是回答您的问题,而是修复您原来的问题:

bazel run --experimental_ui_limit_console_output=1 //:hello
至于您的问题,二进制文件的位置(只要您没有自定义工具链)将取决于目标的名称


因此,
//:hello
将在
bazel-bin/hello
中结束,
/a/long:hello
将在
bazel-bin/a/long/hello
中结束,依此类推……

在构建之后,您的可执行文件将在bazel-bin目录中。直接从那里运行可执行文件会起作用吗?例如,在bash$/bazel-bin/fooso中不幸的是,它的确切位置取决于平台。在我的机器上是bazel bin/foo/bar/tool/linux_amd64_stripped/tool,在mac上是darwin_amd64_stripped。我的脚本的当前版本几乎与您描述的完全相同,我可以调整它以尝试搜索正确的依赖于系统的文件夹,但我真的希望这样做要简单、简洁地识别它。我担心的是,文档说这会将控制台输出限制为一个字节,所以如果你要运行bazel--experimental_ui_limit_console_output=1//:hello>some_file.txt的话,它的开头会有一个额外的字符。好吧,这通常是一个新行,但我不认为这是有保证的。