Regras
- cc_binary
- cc_import
- cc_library
- cc_proto_library
- cc_shared_library
- cc_static_library
- fdo_prefetch_hints
- fdo_profile
- memprof_profile
- propeller_optimize
- cc_test
- cc_toolchain
- cc_toolchain_suite
cc_binary
Ver origem da regracc_binary(name, deps, srcs, data, additional_linker_inputs, args, compatible_with, copts, defines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, includes, licenses, link_extra_lib, linkopts, linkshared, linkstatic, local_defines, malloc, nocopts, output_licenses, restricted_to, stamp, tags, target_compatible_with, testonly, toolchains, visibility, win_def_file)
Metas de saída implícitas
- name.stripped(criado somente se solicitado explicitamente): uma versão reduzida do binário.- strip -gé executado no binário para remover símbolos de depuração. Outras opções de remoção podem ser fornecidas na linha de comando usando- --stripopt=-foo. Essa saída só é criada se for explicitamente solicitada.
- name.dwp(criado apenas se solicitado explicitamente): se o Fission estiver ativado, um arquivo de pacote de informações de depuração adequado para depurar binários implantados remotamente. Caso contrário, um arquivo vazio.
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  Podem ser destinos  | 
| srcs | Lista de rótulos. O padrão é  Todos os arquivos  Um arquivo  Todos os arquivos  Se o nome de uma regra estiver em  
            Tipos de arquivos  
 ...e todas as regras que produzem esses arquivos. Extensões diferentes indicam linguagens de programação diferentes de acordo com a convenção do gcc. | 
| additional_linker_inputs | Lista de rótulos. O padrão é  Por exemplo, arquivos .res do Windows compilados podem ser fornecidos aqui para serem incorporados ao destino binário. | 
| copts | Lista de strings. O padrão é  
            Cada string nesse atributo é adicionada na ordem especificada a  
            Se o pacote declarar o recurso
             | 
| defines | Lista de strings. O padrão é  -De adicionada à linha de comando de compilação para esse destino,
          bem como a todas as regras que dependem dele. Tenha muito cuidado, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione valores de definição alocal_defines. | 
| includes | Lista de strings. O padrão é  
          Sujeito à substituição "Criar variável".
          Cada string é precedida por  Os cabeçalhos precisam ser adicionados a srcs ou hdrs. Caso contrário, eles não estarão disponíveis para regras dependentes quando a compilação for em sandbox (o padrão). | 
| link_extra_lib | Rótulo; o padrão é  
            Por padrão, os binários C++ são vinculados a  | 
| linkopts | Lista de strings. O padrão é  LINKOPTSantes de vincular o destino binário.
            Cada elemento dessa lista que não começa com  | 
| linkshared | Booleano; não configurável; o padrão é  linkshared=Truena sua regra. Por padrão, essa opção fica desativada.
          A presença dessa flag significa que a vinculação ocorre com a flag  
          Se você especificar  | 
| linkstatic | Booleano; o padrão é  cc_binaryecc_test: vincule o binário no modo
           estático. Paracc_library.linkstatic, consulte abaixo.
             Por padrão, essa opção fica ativada para  
             Se ativada e se for um binário ou um teste, essa opção vai instruir a ferramenta de build a vincular
              Há três maneiras diferentes de vincular um executável: 
 
           O atributo  
           Se  | 
| local_defines | Lista de strings. O padrão é  -De adicionada à linha de comando de compilação para essa meta,
          mas não aos dependentes dela. | 
| malloc | Rótulo; o padrão é  
            Por padrão, os binários C++ são vinculados a  | 
| nocopts | String; o padrão é  COPTSpreexistente que corresponda a essa expressão regular (incluindo valores especificados explicitamente no atributo copts da regra) será removido deCOPTSpara fins de compilação dessa regra.
          Esse atributo raramente é necessário. | 
| stamp | Número inteiro. O padrão é  
 Os binários carimbados não são recriados, a menos que as dependências mudem. | 
| win_def_file | Rótulo; o padrão é  Esse atributo só deve ser usado quando o Windows é a plataforma de destino. Ele pode ser usado para exportar símbolos durante a vinculação de uma biblioteca compartilhada. | 
cc_import
Ver origem da regracc_import(name, deps, data, hdrs, alwayslink, compatible_with, deprecation, distribs, features, interface_library, licenses, restricted_to, shared_library, static_library, system_provided, tags, target_compatible_with, testonly, visibility)
As regras cc_import permitem que os usuários importem bibliotecas C/C++ pré-compiladas.
Confira os casos de uso típicos: 
1. Como vincular uma biblioteca estática
cc_import( name = "mylib", hdrs = ["mylib.h"], static_library = "libmylib.a", # If alwayslink is turned on, # libmylib.a will be forcely linked into any binary that depends on it. # alwayslink = 1, )
cc_import( name = "mylib", hdrs = ["mylib.h"], shared_library = "libmylib.so", )
cc_import( name = "mylib", hdrs = ["mylib.h"], # mylib.lib is an import library for mylib.dll which will be passed to linker interface_library = "mylib.lib", # mylib.dll will be available for runtime shared_library = "mylib.dll", )
system_provided=True (Windows)
cc_import( name = "mylib", hdrs = ["mylib.h"], # mylib.lib is an import library for mylib.dll which will be passed to linker interface_library = "mylib.lib", # mylib.dll is provided by system environment, for example it can be found in PATH. # This indicates that Bazel is not responsible for making mylib.dll available. system_provided = 1, )
No Unix:
cc_import( name = "mylib", hdrs = ["mylib.h"], static_library = "libmylib.a", shared_library = "libmylib.so", ) # first will link to libmylib.a cc_binary( name = "first", srcs = ["first.cc"], deps = [":mylib"], linkstatic = 1, # default value ) # second will link to libmylib.so cc_binary( name = "second", srcs = ["second.cc"], deps = [":mylib"], linkstatic = 0, )
cc_import( name = "mylib", hdrs = ["mylib.h"], static_library = "libmylib.lib", # A normal static library interface_library = "mylib.lib", # An import library for mylib.dll shared_library = "mylib.dll", ) # first will link to libmylib.lib cc_binary( name = "first", srcs = ["first.cc"], deps = [":mylib"], linkstatic = 1, # default value ) # second will link to mylib.dll through mylib.lib cc_binary( name = "second", srcs = ["second.cc"], deps = [":mylib"], linkstatic = 0, )
cc_import é compatível com um atributo de inclusão. Exemplo:
cc_import( name = "curl_lib", hdrs = glob(["vendor/curl/include/curl/*.h"]), includes = [ "vendor/curl/include" ], shared_library = "vendor/curl/lib/.libs/libcurl.dylib", )
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  depsem Atributos típicos definidos pela
        maioria das regras de build. | 
| hdrs | Lista de rótulos. O padrão é  | 
| alwayslink | Booleano; o padrão é  Se o alwayslink não funcionar com o VS 2017 no Windows, isso é devido a um problema conhecido. Faça upgrade do VS 2017 para a versão mais recente. | 
| interface_library | Rótulo; o padrão é   Tipos de arquivos permitidos:
             | 
| shared_library | Rótulo; o padrão é   Tipos de arquivo permitidos:
             | 
| static_library | Rótulo; o padrão é   Tipos de arquivo permitidos:
             | 
| system_provided | Booleano; o padrão é  interface_libraryprecisa ser especificado eshared_libraryprecisa estar vazio. | 
cc_library
Ver origem da regracc_library(name, deps, srcs, data, hdrs, additional_compiler_inputs, additional_linker_inputs, alwayslink, compatible_with, copts, defines, deprecation, distribs, exec_compatible_with, exec_properties, features, implementation_deps, include_prefix, includes, licenses, linkopts, linkstamp, linkstatic, local_defines, nocopts, restricted_to, strip_include_prefix, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, win_def_file)
Verificação da inclusão de cabeçalho
  Todos os arquivos de cabeçalho usados no build precisam ser declarados no hdrs ou
  srcs das regras cc_*. Isso é aplicado.
  Para regras cc_library, os cabeçalhos em hdrs compreendem a interface pública da
  biblioteca e podem ser incluídos diretamente dos arquivos em hdrs e
  srcs da própria biblioteca, bem como dos arquivos em hdrs e
  srcs de regras cc_* que listam a biblioteca no deps.
  Os cabeçalhos em srcs só podem ser incluídos diretamente dos arquivos em hdrs
  e srcs da própria biblioteca. Ao decidir se um cabeçalho vai para
  hdrs ou srcs, pergunte se você quer que os consumidores dessa biblioteca
  possam incluí-la diretamente. Essa é aproximadamente a mesma decisão que entre a visibilidade de public e private em linguagens de programação.
  As regras cc_binary e cc_test não têm uma interface exportada e, portanto, também não têm um atributo hdrs. Todos os cabeçalhos que pertencem diretamente ao binário ou ao teste precisam ser listados no srcs.
Para ilustrar essas regras, confira o exemplo a seguir.
cc_binary(
    name = "foo",
    srcs = [
        "foo.cc",
        "foo.h",
    ],
    deps = [":bar"],
)
cc_library(
    name = "bar",
    srcs = [
        "bar.cc",
        "bar-impl.h",
    ],
    hdrs = ["bar.h"],
    deps = [":baz"],
)
cc_library(
    name = "baz",
    srcs = [
        "baz.cc",
        "baz-impl.h",
    ],
    hdrs = ["baz.h"],
)
  As inclusões diretas permitidas neste exemplo estão listadas na tabela abaixo. Por exemplo,
  foo.cc pode incluir diretamente foo.h e bar.h, mas
  não baz.h.
| Incluindo arquivo | Inclusões permitidas | 
|---|---|
| foo.h | bar.h | 
| foo.cc | foo.h bar.h | 
| bar.h | bar-impl.h baz.h | 
| bar-impl.h | bar.h baz.h | 
| bar.cc | bar.h bar-impl.h baz.h | 
| baz.h | baz-impl.h | 
| baz-impl.h | baz.h | 
| baz.cc | baz.h baz-impl.h | 
  As regras de verificação de inclusão só se aplicam a inclusões diretas. No exemplo acima, foo.cc pode incluir bar.h, que pode incluir baz.h, que, por sua vez, pode incluir baz-impl.h. Tecnicamente, a compilação de um arquivo .cc pode incluir transitivamente qualquer arquivo de cabeçalho em hdrs ou srcs em qualquer cc_library no fechamento transitivo de deps. Nesse caso, o compilador pode ler baz.h e baz-impl.h ao compilar foo.cc, mas foo.cc não pode conter #include "baz.h". Para que isso seja
  permitido, baz precisa ser adicionado ao deps
  de foo.
  O Bazel depende do suporte do conjunto de ferramentas para aplicar as regras de verificação de inclusão.
  O recurso layering_check precisa ser compatível com a cadeia de ferramentas
  e solicitado explicitamente, por exemplo, usando a flag de linha de comando
  --features=layering_check ou o parâmetro
  features da função
  package. As toolchains
  fornecidas pelo Bazel só oferecem suporte a esse recurso com clang no Unix e no macOS.
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  Podem ser destinos  | 
| srcs | Lista de rótulos. O padrão é  Todos os arquivos  Um arquivo  Todos os arquivos  Se o nome de uma regra estiver em  
            Tipos de arquivos  
 ...e todas as regras que produzem esses arquivos. Extensões diferentes indicam linguagens de programação diferentes de acordo com a convenção do gcc. | 
| hdrs | Lista de rótulos. O padrão é  Esse é o local preferido para declarar arquivos de cabeçalho que
             descrevem a interface da biblioteca. Esses cabeçalhos serão disponibilizados para inclusão por fontes nesta regra ou em regras dependentes.
             Os cabeçalhos que não devem ser incluídos por um cliente dessa biblioteca precisam ser listados no atributo  | 
| additional_compiler_inputs | Lista de rótulos. O padrão é  | 
| additional_linker_inputs | Lista de rótulos. O padrão é  Por exemplo, arquivos .res do Windows compilados podem ser fornecidos aqui para serem incorporados ao destino binário. | 
| alwayslink | Booleano; o padrão é  srcs, mesmo que alguns não contenham símbolos referenciados pelo binário.
        Isso é útil se o código não for chamado explicitamente por um código no
        binário, por exemplo, se o código se registrar para receber um callback
        fornecido por algum serviço.Se o alwayslink não funcionar com o VS 2017 no Windows, isso é devido a um problema conhecido. Faça upgrade do VS 2017 para a versão mais recente. | 
| copts | Lista de strings. O padrão é  
            Cada string nesse atributo é adicionada na ordem especificada a  
            Se o pacote declarar o recurso
             | 
| defines | Lista de strings. O padrão é  -De adicionada à linha de comando de compilação para esse destino,
          bem como a todas as regras que dependem dele. Tenha muito cuidado, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione valores de definição alocal_defines. | 
| implementation_deps | Lista de rótulos. O padrão é  deps, os cabeçalhos e caminhos de inclusão dessas bibliotecas (e todas as dependências transitivas delas) são usados apenas para a compilação dessa biblioteca, e não para as que dependem dela. As bibliotecas especificadas comimplementation_depsainda são vinculadas em
        destinos binários que dependem dessa biblioteca.Por enquanto, o uso é limitado a cc_libraries e protegido pela flag
         | 
| include_prefix | String; o padrão é  Quando definido, os cabeçalhos no atributo  O prefixo no atributo  | 
| includes | Lista de strings. O padrão é  
          Sujeito à substituição "Criar variável".
          Cada string é precedida por  Os cabeçalhos precisam ser adicionados a srcs ou hdrs. Caso contrário, eles não estarão disponíveis para regras dependentes quando a compilação for em sandbox (o padrão). | 
| linkopts | Lista de strings. O padrão é  LINKOPTSantes de vincular o destino binário.
            Cada elemento dessa lista que não começa com  | 
| linkstamp | Rótulo; o padrão é  base. | 
| linkstatic | Booleano; o padrão é  cc_binaryecc_test: vincule o binário no modo
           estático. Paracc_library.linkstatic, consulte abaixo.
             Por padrão, essa opção fica ativada para  
             Se ativada e se for um binário ou um teste, essa opção vai instruir a ferramenta de build a vincular
              Há três maneiras diferentes de vincular um executável: 
 
           O atributo  
           Se  | 
| local_defines | Lista de strings. O padrão é  -De adicionada à linha de comando de compilação para essa meta,
          mas não aos dependentes dela. | 
| nocopts | String; o padrão é  COPTSpreexistente que corresponda a essa expressão regular (incluindo valores especificados explicitamente no atributo copts da regra) será removido deCOPTSpara fins de compilação dessa regra.
          Esse atributo raramente é necessário. | 
| strip_include_prefix | String; o padrão é  Quando definido, os cabeçalhos no atributo  Se for um caminho relativo, ele será considerado relativo ao pacote. Se for absoluto, ele será entendido como um caminho relativo ao repositório. O prefixo no atributo  | 
| textual_hdrs | Lista de rótulos. O padrão é  Esse é o local para declarar arquivos de cabeçalho que não podem ser compilados por conta própria. Ou seja, eles sempre precisam ser incluídos textualmente por outros arquivos de origem para criar código válido. | 
| win_def_file | Rótulo; o padrão é  Esse atributo só deve ser usado quando o Windows é a plataforma de destino. Ele pode ser usado para exportar símbolos durante a vinculação de uma biblioteca compartilhada. | 
cc_proto_library
Ver origem da regracc_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
O cc_proto_library gera código C++ de arquivos .proto.
deps precisa apontar para regras proto_library
.
Exemplo:
cc_library(
    name = "lib",
    deps = [":foo_cc_proto"],
)
cc_proto_library(
    name = "foo_cc_proto",
    deps = [":foo_proto"],
)
proto_library(
    name = "foo_proto",
)
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  proto_librarypara gerar código C++. | 
cc_shared_library
Ver origem da regracc_shared_library(name, deps, additional_linker_inputs, dynamic_deps, exports_filter, shared_lib_name, tags, user_link_flags, win_def_file)
Ela produz uma biblioteca compartilhada.
Exemplo
cc_shared_library(
    name = "foo_shared",
    deps = [
        ":foo",
    ],
    dynamic_deps = [
        ":bar_shared",
    ],
    additional_linker_inputs = [
        ":foo.lds",
    ],
    user_link_flags = [
        "-Wl,--version-script=$(location :foo.lds)",
    ],
)
cc_library(
    name = "foo",
    srcs = ["foo.cc"],
    hdrs = ["foo.h"],
    deps = [
        ":bar",
        ":baz",
    ],
)
cc_shared_library(
    name = "bar_shared",
    shared_lib_name = "bar.so",
    deps = [":bar"],
)
cc_library(
    name = "bar",
    srcs = ["bar.cc"],
    hdrs = ["bar.h"],
)
cc_library(
    name = "baz",
    srcs = ["baz.cc"],
    hdrs = ["baz.h"],
)
No exemplo, foo_shared vincula estaticamente foo e baz, sendo este último uma dependência transitiva. Ele não
vincula bar porque já é fornecido dinamicamente pelo
dynamic_dep bar_shared.
O foo_shared usa um arquivo *.lds de script do vinculador para controlar quais símbolos precisam ser exportados. A lógica da regra cc_shared_library não controla quais símbolos são exportados. Ela usa apenas o que se supõe ser exportado para gerar erros durante a fase de análise se duas bibliotecas compartilhadas exportarem os mesmos destinos.
Todas as dependências diretas de cc_shared_library são consideradas
exportadas. Portanto, durante a análise, o Bazel pressupõe que foo está sendo exportado por foo_shared. Não se presume que baz seja exportado por foo_shared. Todos os destinos correspondentes ao exports_filter também são considerados exportados.
Cada cc_library no exemplo deve aparecer no máximo em um cc_shared_library. Se quisermos vincular baz também a
bar_shared, precisaremos adicionar
tags = ["LINKABLE_MORE_THAN_ONCE"] a baz.
Devido ao atributo shared_lib_name, o arquivo produzido por
bar_shared terá o nome bar.so em vez
do nome libbar.so que teria por padrão no Linux.
Erros
Two shared libraries in dependencies export the same symbols.
Isso acontece sempre que você cria um destino com duas dependências cc_shared_library diferentes que exportam o mesmo destino. Para corrigir isso, impeça a exportação das bibliotecas em uma das dependências cc_shared_library.
Two shared libraries in dependencies link the same library statically
Isso vai acontecer sempre que você criar um novo cc_shared_library com duas
dependências cc_shared_library diferentes que vinculam o mesmo destino de forma estática.
Semelhante ao erro com exportações.
Uma maneira de corrigir isso é parar de vincular a biblioteca a uma das dependências
cc_shared_library. Ao mesmo tempo, o que ainda o vincula
precisa exportar a biblioteca para que o que não o vincula mantenha a visibilidade dos
símbolos. Outra maneira é extrair uma terceira biblioteca que exporta o destino.
Uma terceira maneira é marcar o culpado cc_library com LINKABLE_MORE_THAN_ONCE, mas essa correção deve ser rara. Verifique se o cc_library é seguro para ser vinculado mais de uma vez.
'//foo:foo' is already linked statically in '//bar:bar' but not exported`
Isso significa que uma biblioteca no fechamento transitivo do seu deps pode ser acessada
sem passar por uma das dependências cc_shared_library, mas já está
vinculada a um cc_shared_library diferente em dynamic_deps e não é
exportada.
A solução é exportar da dependência cc_shared_library ou extrair um terceiro cc_shared_library que a exporte.
Do not place libraries which only contain a precompiled dynamic library in deps.
Se você tiver uma biblioteca dinâmica pré-compilada, ela não precisará e não poderá ser
vinculada estaticamente ao destino cc_shared_library atual que você está
criando. Portanto, ele não pertence a deps do
cc_shared_library. Se essa biblioteca dinâmica pré-compilada for uma dependência de um dos seus cc_libraries, o cc_library precisará depender dela diretamente.
Trying to export a library already exported by a different shared library
Esse erro aparece se você estiver reivindicando exportar um destino que já está sendo exportado por uma das suas dependências dinâmicas na regra atual.
Para corrigir isso, remova o destino de deps e confie apenas na dependência dinâmica ou verifique se o exports_filter não captura esse destino.
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  
        Qualquer dependência transitiva de biblioteca dessas dependências diretas será vinculada a essa biblioteca
        compartilhada, desde que ainda não tenha sido vinculada por um  
        Durante a análise, a implementação da regra vai considerar qualquer destino listado em
         
        A implementação também vai gerar erros sempre que a mesma biblioteca for vinculada estaticamente
        a mais de um  | 
| additional_linker_inputs | Lista de rótulos. O padrão é  user_link_flags. | 
| dynamic_deps | Lista de rótulos. O padrão é  cc_shared_libraryde que o destino atual depende.
        A implementação  | 
| exports_filter | Lista de strings. O padrão é  
        Qualquer destino  
        Observe que esse atributo não adiciona uma aresta de dependência a essas metas. Em vez disso, a aresta de dependência deve ser criada por  A seguinte sintaxe é permitida: 
 
 | 
| shared_lib_name | String; o padrão é  | 
| user_link_flags | Lista de strings. O padrão é  
         cc_shared_library(
            name = "foo_shared",
            additional_linker_inputs = select({
              "//src/conditions:linux": [
                ":foo.lds",
                ":additional_script.txt",
              ],
              "//conditions:default": []}),
            user_link_flags = select({
              "//src/conditions:linux": [
                "-Wl,-rpath,kittens",
                "-Wl,--version-script=$(location :foo.lds)",
                "-Wl,--script=$(location :additional_script.txt)",
              ],
              "//conditions:default": []}),
              ...
         )
         | 
| win_def_file | Rótulo; o padrão é  Esse atributo só deve ser usado quando o Windows é a plataforma de destino. Ele pode ser usado para exportar símbolos durante a vinculação de uma biblioteca compartilhada. | 
cc_static_library
Ver origem da regracc_static_library(name, deps, tags)
A biblioteca estática resultante contém os arquivos de objeto dos destinos listados em
deps, bem como as dependências transitivas deles, com preferência dada a objetos
PIC.
Grupos de saída
linkdeps
Um arquivo de texto que contém os rótulos das dependências transitivas dos destinos listados em
deps que não contribuíram com arquivos de objeto para a biblioteca estática, mas
fornecem pelo menos uma biblioteca estática, dinâmica ou de interface. A biblioteca estática resultante
pode exigir que essas bibliotecas estejam disponíveis no momento da vinculação.
linkopts
Um arquivo de texto que contém o linkopts fornecido pelo usuário de todas as dependências transitivas dos destinos listados em deps.
Símbolos duplicados
Por padrão, a regra cc_static_library verifica se a biblioteca estática resultante não contém símbolos duplicados. Se isso acontecer, o build vai falhar com uma mensagem de erro
que lista os símbolos duplicados e os arquivos de objeto que os contêm.
Essa verificação pode ser desativada por destino ou por pacote definindo
features = ["-symbol_check"] ou globalmente via
--features=-symbol_check.
Suporte a cadeia de ferramentas para symbol_check
As toolchains C++ autoconfiguradas enviadas com o Bazel são compatíveis com o recurso
symbol_check em todas as plataformas. As toolchains personalizadas podem adicionar suporte para
isso de duas maneiras:
- Implementar a ação ACTION_NAMES.validate_static_librarye ativá-la com o recursosymbol_check. O conjunto de ferramentas na ação é invocado com dois argumentos: a biblioteca estática para verificar símbolos duplicados e o caminho de um arquivo que precisa ser criado se a verificação for aprovada.
- O recurso symbol_checkadiciona flags de arquivamento que fazem com que a ação de criação da biblioteca estática falhe em símbolos duplicados.
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  As dependências que não fornecem arquivos de objeto não são incluídas na biblioteca estática, mas os rótulos delas são coletados no arquivo fornecido pelo grupo de saída  | 
fdo_prefetch_hints
Ver origem da regrafdo_prefetch_hints(name, compatible_with, deprecation, distribs, features, licenses, profile, restricted_to, tags, target_compatible_with, testonly, visibility)
Representa um perfil de dicas de pré-busca do FDO que está no espaço de trabalho ou em um caminho absoluto especificado. Exemplos:
fdo_prefetch_hints(
    name = "hints",
    profile = "//path/to/hints:profile.afdo",
)
fdo_profile(
  name = "hints_abs",
  absolute_path_profile = "/absolute/path/profile.afdo",
)
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| profile | Rótulo; o padrão é  | 
fdo_profile
Ver origem da regrafdo_profile(name, absolute_path_profile, compatible_with, deprecation, distribs, features, licenses, profile, proto_profile, restricted_to, tags, target_compatible_with, testonly, visibility)
Representa um perfil do FDO que está no espaço de trabalho ou em um caminho absoluto especificado. Exemplos:
fdo_profile(
    name = "fdo",
    profile = "//path/to/fdo:profile.zip",
)
fdo_profile(
  name = "fdo_abs",
  absolute_path_profile = "/absolute/path/profile.zip",
)
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| absolute_path_profile | String; o padrão é  | 
| profile | Rótulo; o padrão é  | 
| proto_profile | Rótulo; o padrão é  | 
memprof_profile
Ver origem da regramemprof_profile(name, absolute_path_profile, compatible_with, deprecation, distribs, features, licenses, profile, restricted_to, tags, target_compatible_with, testonly, visibility)
Representa um perfil MEMPROF que está no espaço de trabalho ou em um caminho absoluto especificado. Exemplos:
memprof_profile(
    name = "memprof",
    profile = "//path/to/memprof:profile.afdo",
)
memprof_profile(
  name = "memprof_abs",
  absolute_path_profile = "/absolute/path/profile.afdo",
)
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| absolute_path_profile | String; o padrão é  | 
| profile | Rótulo; o padrão é  | 
propeller_optimize
Ver origem da regrapropeller_optimize(name, compatible_with, deprecation, distribs, features, ld_profile, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
Representa um perfil de otimização do Propeller no espaço de trabalho. Exemplo:
propeller_optimize(
    name = "layout",
    cc_profile = "//path:cc_profile.txt",
    ld_profile = "//path:ld_profile.txt"
)
propeller_optimize(
    name = "layout_absolute",
    absolute_cc_profile = "/absolute/cc_profile.txt",
    absolute_ld_profile = "/absolute/ld_profile.txt"
)
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| ld_profile | Rótulo; o padrão é  | 
cc_test
Ver origem da regracc_test(name, deps, srcs, data, additional_linker_inputs, args, compatible_with, copts, defines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, includes, licenses, link_extra_lib, linkopts, linkstatic, local, local_defines, malloc, nocopts, restricted_to, shard_count, size, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility, win_def_file)
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| deps | Lista de rótulos. O padrão é  Podem ser destinos  | 
| srcs | Lista de rótulos. O padrão é  Todos os arquivos  Um arquivo  Todos os arquivos  Se o nome de uma regra estiver em  
            Tipos de arquivos  
 ...e todas as regras que produzem esses arquivos. Extensões diferentes indicam linguagens de programação diferentes de acordo com a convenção do gcc. | 
| additional_linker_inputs | Lista de rótulos. O padrão é  Por exemplo, arquivos .res do Windows compilados podem ser fornecidos aqui para serem incorporados ao destino binário. | 
| copts | Lista de strings. O padrão é  
            Cada string nesse atributo é adicionada na ordem especificada a  
            Se o pacote declarar o recurso
             | 
| defines | Lista de strings. O padrão é  -De adicionada à linha de comando de compilação para esse destino,
          bem como a todas as regras que dependem dele. Tenha muito cuidado, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione valores de definição alocal_defines. | 
| includes | Lista de strings. O padrão é  
          Sujeito à substituição "Criar variável".
          Cada string é precedida por  Os cabeçalhos precisam ser adicionados a srcs ou hdrs. Caso contrário, eles não estarão disponíveis para regras dependentes quando a compilação for em sandbox (o padrão). | 
| link_extra_lib | Rótulo; o padrão é  
            Por padrão, os binários C++ são vinculados a  | 
| linkopts | Lista de strings. O padrão é  LINKOPTSantes de vincular o destino binário.
            Cada elemento dessa lista que não começa com  | 
| linkstatic | Booleano; o padrão é  cc_binaryecc_test: vincule o binário no modo
           estático. Paracc_library.linkstatic, consulte abaixo.
             Por padrão, essa opção fica ativada para  
             Se ativada e se for um binário ou um teste, essa opção vai instruir a ferramenta de build a vincular
              Há três maneiras diferentes de vincular um executável: 
 
           O atributo  
           Se  | 
| local_defines | Lista de strings. O padrão é  -De adicionada à linha de comando de compilação para essa meta,
          mas não aos dependentes dela. | 
| malloc | Rótulo; o padrão é  
            Por padrão, os binários C++ são vinculados a  | 
| nocopts | String; o padrão é  COPTSpreexistente que corresponda a essa expressão regular (incluindo valores especificados explicitamente no atributo copts da regra) será removido deCOPTSpara fins de compilação dessa regra.
          Esse atributo raramente é necessário. | 
| stamp | Número inteiro. O padrão é  
 Os binários carimbados não são recriados, a menos que as dependências mudem. | 
| win_def_file | Rótulo; o padrão é  Esse atributo só deve ser usado quando o Windows é a plataforma de destino. Ele pode ser usado para exportar símbolos durante a vinculação de uma biblioteca compartilhada. | 
cc_toolchain
Ver origem da regracc_toolchain(name, all_files, ar_files, as_files, compatible_with, compiler_files, compiler_files_without_includes, coverage_files, deprecation, distribs, dwp_files, dynamic_runtime_lib, exec_transition_for_inputs, features, libc_top, licenses, linker_files, module_map, objcopy_files, restricted_to, static_runtime_lib, strip_files, supports_header_parsing, supports_param_files, tags, target_compatible_with, testonly, toolchain_config, toolchain_identifier, visibility)
Representa um conjunto de ferramentas C++.
Essa regra é responsável por:
- 
      Coletando todos os artefatos necessários para a execução de ações em C++. Isso é feito por
      atributos como all_files,compiler_files,linker_filesou outros atributos que terminam com_files. Geralmente, esses são filegroups que usam globbing em todos os arquivos necessários.
- 
      Gerar linhas de comando corretas para ações em C++. Isso é feito usando o provedor CcToolchainConfigInfo(detalhes abaixo).
  Use o atributo toolchain_config para configurar a cadeia de ferramentas do C++.
  Consulte também esta
  
    página
   para ver a documentação detalhada sobre configuração e seleção do conjunto de ferramentas C++.
  Use tags = ["manual"] para evitar que as toolchains sejam criadas e configuradas
  desnecessariamente ao invocar bazel build //....
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| all_files | Rótulo; obrigatórioColeção de todos os artefatos cc_toolchain. Esses artefatos serão adicionados como entradas a todas as ações relacionadas a rules_cc, exceto as que usam conjuntos mais precisos de artefatos dos atributos abaixo. O Bazel pressupõe que all_filesé um superconjunto de todos os outros atributos que fornecem artefatos.Por exemplo, a compilação de linkstamp precisa de arquivos de compilação e de vinculação. Portanto, ela usaall_files.
        É isso que  | 
| ar_files | Rótulo; o padrão é  Coleção de todos os artefatos cc_toolchain necessários para ações de arquivamento. | 
| as_files | Rótulo; o padrão é  Coleção de todos os artefatos cc_toolchain necessários para ações de assembly. | 
| compiler_files | Rótulo; obrigatórioColeção de todos os artefatos cc_toolchain necessários para ações de compilação. | 
| compiler_files_without_includes | Rótulo; o padrão é  | 
| coverage_files | Rótulo; o padrão é  | 
| dwp_files | Rótulo; obrigatórioColeção de todos os artefatos cc_toolchain necessários para ações de dwp. | 
| dynamic_runtime_lib | Rótulo; o padrão é  Isso será usado quando o recurso "static_link_cpp_runtimes" estiver ativado e estivermos vinculando dependências dinamicamente. | 
| exec_transition_for_inputs | Booleano; o padrão é  | 
| libc_top | Rótulo; o padrão é  | 
| linker_files | Rótulo; obrigatórioColeção de todos os artefatos cc_toolchain necessários para ações de vinculação. | 
| module_map | Rótulo; o padrão é  | 
| objcopy_files | Rótulo; obrigatórioColeção de todos os artefatos cc_toolchain necessários para ações objcopy. | 
| static_runtime_lib | Rótulo; o padrão é  Isso será usado quando o recurso "static_link_cpp_runtimes" estiver ativado e estivermos vinculando dependências de forma estática. | 
| strip_files | Rótulo; obrigatórioColeção de todos os artefatos cc_toolchain necessários para ações de remoção. | 
| supports_header_parsing | Booleano; o padrão é  | 
| supports_param_files | Booleano; o padrão é  | 
| toolchain_config | Rótulo; obrigatórioO rótulo da regra que fornece cc_toolchain_config_info. | 
| toolchain_identifier | String; não configurável; o padrão é  
          Até que o problema #5380 seja corrigido,
          esta é a maneira recomendada de associar  | 
cc_toolchain_suite
Ver origem da regracc_toolchain_suite(name, compatible_with, deprecation, distribs, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Representa uma coleção de toolchains C++.
Essa regra é responsável por:
- Coletar todas as toolchains relevantes do C++.
- 
      Selecionar uma cadeia de ferramentas dependendo das opções --cpue--compilertransmitidas ao Bazel.
Consulte também esta página para ver a documentação detalhada sobre configuração e seleção do conjunto de ferramentas C++.
Argumentos
| Atributos | |
|---|---|
| name | Nome: obrigatório Um nome exclusivo para essa segmentação. | 
| toolchains | Dicionário que mapeia strings para rótulos; não configurável; obrigatórioUm mapa de strings "<cpu>" ou "<cpu>|<compiler>" para um rótulo cc_toolchain. "<cpu>" será usado quando apenas--cpufor transmitido ao Bazel, e "<cpu>|<compiler>" será usado quando--cpue--compilerforem transmitidos ao Bazel. Exemplo:
 
          cc_toolchain_suite(
            name = "toolchain",
            toolchains = {
              "piii|gcc": ":my_cc_toolchain_for_piii_using_gcc",
              "piii": ":my_cc_toolchain_for_piii_using_default_compiler",
            },
          )
           |