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 reglacc_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 destinocc_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 bibliotecamylibque 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 argumentosinclude_prefixystrip_include_prefixen el destino de la reglacc_library.