En esta página, se incluyen recursos que te ayudan a usar Bazel con proyectos de C++. Se vincula a un instructivo, reglas de compilación y otra información específica para compilar proyectos de C++ con Bazel.
Trabaja con Bazel
Los siguientes recursos te ayudarán a trabajar con Bazel en proyectos de C++:
- Instructivo: Cómo compilar un proyecto de C++
- Casos de uso habituales de C++
- Reglas de C/C++
- Bibliotecas esenciales
- Configuración de la cadena de herramientas de C++
- Instructivo: Cómo configurar cadenas de herramientas de C++
- Integración con reglas de C++
Prácticas recomendadas
Además de las prácticas recomendadas generales de Bazel, a continuación se incluyen prácticas recomendadas específicas para proyectos de C++.
Archivos BUILD
Sigue los lineamientos que se indican a continuación cuando crees tus archivos BUILD:
- Cada archivo - BUILDdebe contener un destino de regla- cc_librarypor unidad de compilación en el directorio.
- Debes granularizar tus bibliotecas de C++ lo más posible para maximizar la incrementalidad y paralelizar la compilación. 
- Si hay un solo archivo fuente en - srcs, asigna a la biblioteca el mismo nombre que el de ese archivo C++. Esta biblioteca debe contener archivos C++, archivos de encabezado coincidentes 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_testpor cada destino- cc_libraryen el archivo. Asigna el nombre- [library-name]_testal destino y- [library-name]_test.ccal archivo fuente. Por ejemplo, un destino de prueba para el destino de biblioteca- mylibque se muestra arriba se vería de la siguiente manera:- 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 sean relativas al directorio del espacio de trabajo. 
- Usa includes entre comillas ( - #include "foo/bar/baz.h") para los encabezados que no son del sistema, no corchetes angulares (- #include <foo/bar/baz.h>).
- Evita usar atajos de directorio de UNIX, como - .(directorio actual) o- ..(directorio principal).
- Para el código heredado o - third_partyque requiere que las inclusiones apunten fuera del repositorio del proyecto, como las inclusiones de repositorios externos que requieren un prefijo, usa los argumentos- include_prefixy- strip_include_prefixen el destino de la regla- cc_library.