C++ y Bazel

Informar un problema Ver fuente Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Esta página contiene recursos que te ayudarán a usar Bazel con proyectos de C++. Vincula a un instructivo, reglas de compilación y otra información específica de la compilación de C++ proyectos con Bazel.

Cómo trabajar con Bazel

Los siguientes recursos te ayudarán a trabajar con Bazel en proyectos de C++:

Prácticas recomendadas

Además de las prácticas recomendadas generales sobre Bazel, a continuación se incluyen las siguientes: prácticas recomendadas específicas de los proyectos de C++.

Archivos de BUILD

Sigue los lineamientos que se indican a continuación cuando crees tus archivos BUILD:

  • Cada archivo BUILD debe contener un cc_library. el destino de la regla por unidad de compilación en el directorio.

  • Debes detallar las bibliotecas de C++ tanto como como sea posible para maximizar la incrementalidad y paralelizar la compilación.

  • Si hay un solo archivo de origen en srcs, asígnale el mismo nombre a la biblioteca el nombre de ese archivo C++. Esta biblioteca debe contener archivos C++, cualquier coincidencia archivos de encabezado y las dependencias directas de la biblioteca. Por ejemplo:

    cc_library(
        name = "mylib",
        srcs = ["mylib.cc"],
        hdrs = ["mylib.h"],
        deps = [":lower-level-lib"]
    )
    
  • Usa un destino de regla cc_test por objetivo cc_library en el archivo. Asigna un nombre al el [library-name]_test de destino y el archivo de origen [library-name]_test.cc. Por ejemplo, un destino de prueba para el destino de la biblioteca mylib que se mostró anteriormente verse así:

    cc_test(
        name = "mylib_test",
        srcs = ["mylib_test.cc"],
        deps = [":mylib"]
    )
    

Incluir rutas

Sigue estos lineamientos para las rutas de inclusión:

  • Haz que todas las rutas de inclusión estén relacionadas con el directorio del lugar de trabajo.

  • Usa inclusiones entrecomilladas (#include "foo/bar/baz.h") para encabezados que no sean del sistema, no corchetes angulares (#include <foo/bar/baz.h>).

  • Evita usar combinaciones de teclas del directorio de UNIX, como . (directorio actual) o .. (directorio principal).

  • Para el código heredado o third_party que requiere que apuntes fuera del de un repositorio de proyecto, como incluir un repositorio externo que requiere un prefijo, usa include_prefix y strip_include_prefix en el destino de la regla cc_library.