请在我的存储库中查看bin-win目标: https://github.com/thinlizzy/bazelexample/blob/master/demo/BUILD#L28
它似乎正确地将可执行文件打包在名为bin-win.tar.gz的文件中,但我仍然有一些问题:
1-在我的机器中,该文件正在此目录中生成:
C:\用户\约翰\应用程序数据\本地\ Temp_bazel_John \ aS4O8v3V \ execroot__main __ \巴泽勒出\ x64_windows-的FastBuild \ BIN \演示
这使得查找tar.gz文件成为一项繁琐的任务。 问题是如何让我的bin-win目标将文件从那里移动到更好的位置"? (可能由环境变量或cmd行参数/标志定义)
2-如何在可执行文件中包含更多文件?我的实际用例是我想提供数据文件和一些DLL以及可执行文件。我应该使用filegroup()规则并在" srcs"中引用其名称属性也是?
2a-对于DLL,有没有办法制作一个filegroup()规则来解释环境变量? (例如:DLL的目录)
谢谢!
答案 0 :(得分:0)
在工作区中查找if( url.indexOf('//') < 0 ) {
url = 'http://' + url;
}
和bazel-bin
目录。这些实际上是Bazel在每次构建后更新的联结(目录符号链接)。如果您bazel-genfiles
,则可以bazel build //:demo
访问其输出。
(a)您还可以在您的环境中设置bazel-bin\demo
和TMP
以指向例如TEMP
。 Bazel会选择那些而不是c:\tmp
,因此输出目录的完整路径(C:\Users\John\AppData\Local\Temp
指向)将为bazel-bin
。
(b)或者您可以传递--output_user_root
启动标记,例如c:\tmp\aS4O8v3V\execroot\__main__\bazel-out\x64_windows-fastbuild\bin
。这与(a)具有相同的效果。
目前无法摆脱路径的bazel--output_user_root=c:\tmp build //:demo
部分。
是的,我认为您需要将这些文件放在_bazel_John\aS4O8v3V\execroot
中。您是否使用pkg_tar.srcs
规则无关紧要; filegroup只允许您将文件组合在一起,因此您可以按名称引用该组,这在您需要在多个规则中引用相同文件时非常有用。
2.A。我不这么认为。