Esta página contém recursos que ajudam você a usar o Bazel com projetos C++. Ele vincula a um tutorial, regras de build e outras informações específicas para criar projetos C++ com o Bazel.
Como trabalhar com o Bazel
Os recursos a seguir vão ajudar você a trabalhar com o Bazel em projetos C++:
- Tutorial: como criar um projeto em C++
- Casos de uso comuns de C++
- Regras do C/C++
- Configuração da cadeia de ferramentas do C++
- Tutorial: como configurar toolchains do C++
- Integração com regras do C++
Práticas recomendadas
Além das práticas recomendadas gerais do Bazel, confira abaixo as práticas recomendadas específicas para projetos C++.
Arquivos BUILD
Siga as diretrizes abaixo ao criar seus arquivos BUILD:
Cada arquivo
BUILD
precisa conter um destino de regracc_library
por unidade de compilação no diretório.É necessário granularizar suas bibliotecas C++ o máximo possível para maximizar a incrementalidade e paralelizar o build.
Se houver um único arquivo de origem em
srcs
, nomeie a biblioteca com o mesmo nome do arquivo C++. Essa biblioteca precisa conter arquivos C++, todos os arquivos de cabeçalho correspondentes e as dependências diretas da biblioteca. Exemplo:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
Use um destino de regra
cc_test
por destinocc_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 ficaria assim:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
Incluir caminhos
Siga estas diretrizes para incluir caminhos:
Faça com que todos os caminhos de inclusão sejam relativos ao diretório do espaço de trabalho.
Use aspas (
#include "foo/bar/baz.h"
) para cabeçalhos que não são do sistema, não use colchetes (#include <foo/bar/baz.h>
).Evite usar atalhos de diretório do UNIX, como
.
(diretório atual) ou..
(diretório pai).Para códigos
third_party
legados ou que exigem que o include aponte para fora do repositório do projeto, como o include do repositório externo que exige um prefixo, use os argumentosinclude_prefix
estrip_include_prefix
no destino da regracc_library
.