Bazel post构建文件副本

时间:2017-05-11 10:14:11

标签: post-build-event bazel file-copying

我有一个项目,我正在使用Bazel构建多个库和可执行文件。我需要构建一个共享库,然后在构建可执行文件之前将其复制到另一个文件夹。

我可以构建库,但我无法弄清楚如何在构建后复制它。到目前为止,最好的猜测是genrulecp,但我不确定如何实现它并确保它在库构建后运行。

有办法做到这一点吗?

至于我需要这样做的原因: 我正在构建一个Unity项目,该项目需要构建本机代码插件并将其放置在Unity项目文件夹中的特定位置。

1 个答案:

答案 0 :(得分:0)

您可以将规则包装在宏中,如下所示:

def myshared_library(name, **kwargs):
    unity_rule(
        name = "%s.lib" % name,
        **kwargs
    )

    native.genrule(
        name = name,
        srcs = ["%s.lib" % name],
        outs = ["dummy.output"],
        cmd = "cp $(location {}.lib) $(location deployloc)".format(name),
    )

然后将unity_rule替换为myshared_library。如果你选择更好的名字,可以获得奖励。

不是最优雅的方式,但应该有效