1

我看到有一个线程已经讨论过这个问题,但有点含糊:

我可以指示 bazel 向可执行文件发出“.elf”后缀吗?

不幸的是,这对我没有帮助。我正在尝试使用 Bazel 在 Windows 上为 Autodesk Maya 编译插件,因此我的输出需要是.dll具有自定义扩展名的文件.mll。这是我的 BUILD 文件设置方式的示例代码:

cc_binary(
    name = "myPlugin.dll",  # can't rename this to .mll, otherwise bazel won't build
    srcs = glob(
        [
            "myPlugin.h",
            "myPlugin.cpp",
        ]
    ),
    deps = [
        "@maya_repo//:Foundation",
        "@maya_repo//:OpenMaya",
    ],
    linkopts = [
        "-export:initializePlugin",
        "-export:uninitializePlugin",
    ],
    linkshared = True,
)

一切都可以编译,但我似乎找不到将扩展名重命名为的方法.mll,我尝试记录genrules但无法使其工作。

有人能指出我正确的方向吗?

4

1 回答 1

2
genrule(
   name = "plugin_mll",
   srcs = ["myPlugin.dll"],
   outs = ["myPlugin.mll"],
   cmd = "cp $(location myPlugin.dll) $(location myPlugin.mll)",
)

或使用 Make 变量:

genrule(
   name = "plugin_mll",
   srcs = ["myPlugin.dll"],
   outs = ["myPlugin.mll"],
   cmd = "cp $< $@",
)

然后运行bazel build //path/to/package:plugin_mll以调用 genrule,或bazel build //path/to/package:myPlugin.mll直接构建文件目标。

于 2018-09-01T19:43:56.450 回答