Переименовать вывод bazel (расширение) после сборки

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

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

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

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


person mdilena    schedule 01.09.2018    source источник


Ответы (1)


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, чтобы вызвать правило, или bazel build //path/to/package:myPlugin.mll, чтобы напрямую создать цель файла.

person Jin    schedule 01.09.2018
comment
спасибо за Ваш ответ! Однако я думаю, что мне нужно решить еще одну проблему, прежде чем я смогу заставить ее работать: в настоящее время myPlugin.dll выводит три файла, в основном он копирует файлы .dll из Maya, от которых он зависит (OpenMaya.dll, Foundation.dll), кроме создания моего вывода . Поэтому, когда я делаю cp ($location myPlugin.dll), он говорит, что есть несколько выходов, но я не могу найти способ сказать Bazel, чтобы он не помещал туда эти дополнительные библиотеки. Это возможно? - person mdilena; 02.09.2018
comment
Ха, выяснил, в чем проблема, мне пришлось использовать tools = [":myPlugin.dll"], чтобы заставить его работать, чтобы он не учитывал внешние библиотеки. Большое спасибо за твою помощь! - person mdilena; 02.09.2018