Resumen de aprendizaje de Bazel (1)

Bazel es una herramienta de prueba y compilación de código abierto, que puede considerarse lo mismo que Make, Maven y Gradle. Sin embargo, el lenguaje de compilación de Bazel es más avanzado, más legible y es compatible con varios idiomas y plataformas. Bazel admite una gran base de código y una gran cantidad de usuarios en varios repositorios.

1. Las ventajas de Bazel se muestran en los siguientes 5 aspectos:

1) Lenguaje de compilación de alto nivel: a diferencia de otras herramientas, Bazel utiliza los conceptos de bibliotecas, archivos binarios, scripts y conjuntos de datos para evitar la complejidad de escribir archivos para invocar herramientas como compiladores y enlazadores, por lo que Bazel describe la construcción de el proyecto Las propiedades son más legibles.

2) Rápido y confiable: Bazel almacena en caché las operaciones anteriores, rastrea el contenido del archivo y la modificación de los comandos de compilación. De esta manera, Bazel sabe cuándo es necesario reconstruirlo y solo reconstruye los lugares modificados. Para acelerar aún más la compilación, también puede configurar el proyecto para que se compile de manera altamente paralela e incremental.

3) Multiplataforma: Bazel se puede ejecutar en Linux, macOS y Windows. Bazel puede crear binarios y paquetes desplegables para múltiples plataformas (incluyendo escritorio, servidor y móvil) desde el mismo proyecto.

4) Gran escala: Bazel mantiene la flexibilidad al lidiar con la construcción de más de 100k archivos fuente y puede trabajar con múltiples repositorios y decenas de miles de grupos de usuarios.

5) Extensible: admite varios idiomas y Bazel se puede ampliar para admitir cualquier otro idioma o marco.

En general, tiene muchos beneficios, es conveniente de usar y aún puede funcionar bien incluso con una gran cantidad de código o una gran cantidad de desarrolladores.

2. ¿Cómo usar Bazel?

1) Debe instalarse primero:

1、添加包源:
sudo apt install curl gnupg
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
sudo mv bazel.gpg /etc/apt/trusted.gpg.d/
echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
2、安装:
sudo apt update && sudo apt install bazel

sudo apt update && sudo apt full-upgrade

sudo apt install bazel-1.0.0 (默认安装最新版本,这里指定了版本1.0.0)

2) Configure un espacio de trabajo, que es el directorio donde Bazel encuentra la entrada de compilación y los archivos de compilación y almacena la salida de compilación.

3) Escribe un BUILD que le diga a Bazel qué construir y cómo construir.

Bazel usa la sintaxis de Starlark para escribir archivos de espacio de trabajo / BUILD, que son similares a makeifle en Make y CMakeLists en CMake.

package(default_visibility = ["//visibility:public"])

load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")

cc_library(
    name = "hello-lib",
    srcs = ["hello-lib.cc"],
    hdrs = ["hello-lib.h"],
)

cc_binary(
    name = "hello-world",
    srcs = ["hello-world.cc"],
    deps = [":hello-lib"],
)

cc_test(
    name = "hello-success_test",
    srcs = ["hello-world.cc"],
    deps = [":hello-lib"],
)

cc_test(
    name = "hello-fail_test",
    srcs = ["hello-fail.cc"],
    deps = [":hello-lib"],
)

filegroup(
    name = "srcs",
    srcs = glob(["**"]),
)

El objetivo de compilación especifica un conjunto de artefactos de entrada que construirá Bazel, sus dependencias, las reglas de compilación que Bazel usará para compilarlo y las opciones para configurar las reglas de compilación.
Las reglas de compilación especifican las herramientas de compilación (como compiladores y enlazadores) y su configuración que utilizará Bazel. Bazel viene con muchas reglas de compilación que cubren los tipos más comunes de artefactos en los idiomas admitidos en las plataformas compatibles.

4) Ejecutar

运行命令类似:
bazel [<startup options>] <command> [<args>]

bazel [<startup options>] <command> [<args>] -- [<target patterns>]

En tercer lugar, el proceso de funcionamiento de Bazel puede consultar este artículo Resumen de aprendizaje de Bazel (1)

En cuarto lugar, Bazel tiene algo llamado gráfico de acción, que debería ser DAG. El
gráfico de acción representa los artefactos de construcción, la relación entre ellos y las acciones de construcción que realizará Bazel. Con la ayuda de este gráfico, Bazel puede realizar un seguimiento de los cambios en el contenido del archivo y los cambios en las operaciones (como los comandos de compilación o prueba) y saber qué trabajo de compilación se ha realizado antes. El gráfico también le permite rastrear fácilmente las dependencias en el código.

Supongo que te gusta

Origin blog.csdn.net/whuzhang16/article/details/111831822
Recomendado
Clasificación