Esta página contém recursos que ajudam você a usar o Bazel com projetos em C++. Ele vincula a um tutorial, regras de build e outras informações específicas para criar C++ projetos com o Bazel.
Como trabalhar com o Bazel
Os seguintes recursos ajudam a trabalhar com o Bazel em projetos C++:
- Tutorial: como criar um projeto C++
- Casos de uso comuns do C++
- Regras de C/C++
- Bibliotecas essenciais
- Abseil (link em inglês)
- Boost
- Solicitações HTTPS: CPR e libcurl
- Configuração do conjunto de ferramentas C++
- Tutorial: como configurar conjuntos de ferramentas C++
- Como fazer a integração com regras C++
Práticas recomendadas
Além das práticas recomendadas gerais do Bazel, abaixo estão práticas recomendadas específicas para projetos C++.
Arquivos BUILD
Siga as diretrizes abaixo ao criar seus arquivos BUILD:
Cada arquivo
BUILD
precisa conter umcc_library
. destino de regra por unidade de compilação no diretório.Você precisa granular as bibliotecas C++ o máximo maximizar a incrementabilidade e carregar o build em paralelo.
Se houver um único arquivo de origem em
srcs
, nomeie a biblioteca com o mesmo nome de o nome desse arquivo C++. Essa biblioteca deve conter arquivo(s) C++, qualquer correspondência arquivos de cabeçalho e as dependências diretas da biblioteca. Exemplo:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
Use uma meta de regra
cc_test
para cada destino decc_library
no arquivo. Nomeie o destino[library-name]_test
e o arquivo de origem[library-name]_test.cc
. Por exemplo, um destino de teste para o destino da bibliotecamylib
mostrado acima fica assim:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
Incluir caminhos
Siga estas diretrizes para caminhos de inclusão:
Faça com que todos os caminhos de inclusão sejam relativos ao diretório do espaço de trabalho.
Use inclusões entre aspas (
#include "foo/bar/baz.h"
) para cabeçalhos que não são do sistema, e não sinais de maior e menor (#include <foo/bar/baz.h>
).Evite usar atalhos de diretório UNIX, como
.
(diretório atual) ou..
. (diretório pai).Para código legado ou
third_party
que exige apontar para fora do repositório de projeto, como repositório externo, inclui a exigência de um prefixo, use oinclude_prefix
estrip_include_prefix
argumentos no destino da regracc_library
.
Recursos do conjunto de ferramentas
Os seguintes recursos opcionais
pode melhorar a integridade de um projeto C++. Eles podem ser ativados usando o
a sinalização de linha de comando --features
ou o atributo features
de
repo
,
Regras de package
ou cc_*
:
- O recurso
parse_headers
faz com que o compilador C++ seja usado para analisar (mas não compilar) todos os arquivos principais nos destinos criados e as dependências deles ao usar o--process_headers_in_dependencies
. Isso pode ajudar a detectar problemas em bibliotecas somente de cabeçalho e garantir que os cabeçalhos são autossuficientes e independentes da ordem em que estão incluída. - O recurso
layering_check
determina que os destinos incluem apenas cabeçalhos. fornecidos pelas dependências diretas deles. O conjunto de ferramentas padrão é compatível recurso no Linux comclang
como compilador.