Возможно, это не самое элегантное решение (плюс, я надеюсь, у меня возник вопрос), но именно так мы и делаем, упаковывая / «tarring» каждый двоичный файл в свой собственный пакет bazel / BUILD
file:
cc_binary(
name = "hello"
...
)
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
pkg_tar(
name = "hello_pkg",
srcs = [":hello"],
mode = "0755",
package_dir = "/usr/bin",
)
И затем мы собираем все это в один общий архив / пакет в корне проекта:
pkg_tar(
name = "mypkg",
extension = "tar.gz",
deps = [
"//hello:hello_pkg",
...
],
)
Иногда у нас может быть несколько таких правил, чтобы привет собирал исполняемые файлы экземплярав bin
и библиотеки в lib
с промежуточными целями hello_bin
и hello_lib
.Который таким же образом, как mypkg
выше, будет сначала агрегирован в hello_pkg
, а это, в свою очередь, будет использовано в mypkg
.