Переименовать вывод bazel (расширение) после сборки - PullRequest
0 голосов
/ 01 сентября 2018

Я вижу, что есть нить, где это уже обсуждалось, но немного расплывчато:

Могу ли я поручить Базелу выдать суффикс ".elf" исполняемым файлам?

К сожалению, это не помогает в моем случае. Я пытаюсь скомпилировать плагины для Autodesk Maya на окнах, используя Bazel, поэтому мой вывод должен быть .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, но не мог заставить его работать.

Может ли кто-нибудь указать мне правильное направление?

Спасибо!

1 Ответ

0 голосов
/ 01 сентября 2018
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, чтобы напрямую создать целевой файл.

...