Esta página contém recursos que ajudam você a usar o Bazel com projetos C++. Ela tem links para 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 ajudam você a trabalhar com o Bazel em projetos C++:
- Tutorial: criar um projeto C++
- Casos de uso comuns do C++
- Regras de C/C++
- Bibliotecas essenciais
- Configuração do conjunto de ferramentas C++
- Tutorial: configurar conjuntos de ferramentas C++
- Integração com regras 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 arquivos BUILD:
Cada arquivo
BUILDprecisa conter umcc_librarydestino de regra por unidade de compilação no diretório.É recomendável granularizar as 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 da mesma forma que o arquivo C++. Essa biblioteca precisa conter arquivos C++, 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_testpor destinocc_libraryno arquivo. Nomeie o destino[library-name]_teste o arquivo de origem[library-name]_test.cc. Por exemplo, um destino de teste para o destino da bibliotecamylibmostrado acima seria assim:cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
Incluir caminhos
Siga estas diretrizes para incluir caminhos:
Deixe todos os caminhos de inclusão relativos ao diretório do espaço de trabalho.
Use inclusões entre aspas (
#include "foo/bar/baz.h") para cabeçalhos não relacionados ao sistema, não colchetes angulares (#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_partyque exige inclusões que apontam para fora do repositório do projeto, como inclusões de repositório externo que exigem um prefixo, use os argumentosinclude_prefixestrip_include_prefixno destino da regracc_library.