C++ e Bazel

Informar um problema Mostrar fonte Por noite · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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++:

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 um cc_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 de cc_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 biblioteca mylib 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 o include_prefix e strip_include_prefix argumentos no destino da regra cc_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 com clang como compilador.