Utilitários para compilação, vinculação e geração de linha de comando em C++.
Membros
- action_is_enabled
- CcToolchainInfo
- configure_features
- create_cc_toolchain_config_info
- create_compilation_context
- create_compilation_outputs
- create_compile_variables
- create_library_to_link
- create_link_variables
- create_linker_input
- create_linking_context
- create_linking_context_from_compilation_outputs
- do_not_use_tools_cpp_compiler_present
- get_environment_variables
- get_execution_requirements
- get_memory_inefficient_command_line
- get_tool_for_action
- is_enabled
- link
- merge_compilation_contexts
- merge_compilation_outputs
action_is_enabled
bool cc_common.action_is_enabled(feature_configuration, action_name)Retorna "True" se o action_config estiver ativado na configuração do recurso.
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
action_name
|
obrigatório Nome do action_config. |
CcToolchainInfo
Provider cc_common.CcToolchainInfoA chave usada para recuperar o provedor que contém informações sobre o conjunto de ferramentas C++ que está sendo usado.
configure_features
FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])Cria uma instância feature_configuration. Requer o fragmento de configuração do cpp.
Parâmetros
Parâmetro | Descrição |
---|---|
ctx
|
ctx; ou None
o padrão é None O contexto da regra. |
cc_toolchain
|
obrigatório cc_Dataset em que configuramos os recursos. |
language
|
string; ou None
o padrão é None A linguagem a ser configurada para: c++ ou objc (c++ padrão) |
requested_features
|
o padrão é [] Lista de recursos a serem ativados. |
unsupported_features
|
o padrão é [] Lista de recursos incompatíveis com a regra atual. |
create_cc_toolchain_config_info
CcToolchainConfigInfo cc_common.create_cc_toolchain_config_info(ctx, features=[], action_configs=[], artifact_name_patterns=[], cxx_builtin_include_directories=[], toolchain_identifier, host_system_name=None, target_system_name, target_cpu, target_libc, compiler, abi_version=None, abi_libc_version=None, tool_paths=[], make_variables=[], builtin_sysroot=None, cc_target_os=None)Cria um provedor de
CcToolchainConfigInfo
Parâmetros
Parâmetro | Descrição |
---|---|
ctx
|
obrigatório O contexto da regra. |
features
|
o padrão é [] Contém todas as especificações de sinalização de um recurso. Argumentos:
- provides tiver o nome de outro recurso ou configuração de ação que queremos ativar.- provides contém o mesmo valor de "fornece" em uma configuração de recurso ou ação diferente que queremos ativar. Use esse método para garantir que recursos incompatíveis não sejam ativados acidentalmente ao mesmo tempo, o que dificulta o diagnóstico de erros do compilador.
|
action_configs
|
o padrão é [] Uma configuração de ação corresponde a uma ação do Bazel e permite a seleção de uma ferramenta com base nos recursos ativados. A ativação da configuração de ações ocorre pela mesma semântica dos atributos: um recurso pode "require" ou "implicar" uma configuração de ação da mesma forma que faria com outro recurso. Argumentos:
|
artifact_name_patterns
|
o padrão é [] O nome de um artefato de uma determinada categoria de artefatos de entrada ou saída para uma ação. Argumentos:
|
cxx_builtin_include_directories
|
o padrão é [] Diretórios de inclusão integrados para compilação em C++. Esses devem ser os caminhos exatos usados pelo compilador e geralmente são relativos à raiz de execução. Os caminhos usados pelo compilador podem ser determinados por 'gcc -E -xc++ - -v'. No momento, também usamos os caminhos C++ para a compilação em C, o que é seguro, desde que não haja conflitos de nome entre os arquivos de cabeçalho C++ e C. Os caminhos relativos são resolvidos em relação ao diretório do arquivo de configuração. Se o compilador tiver suporte a --sysroot, esses caminhos devem usar %sysroot% em vez do caminho de inclusão e especificar o atributo sysroot para fornecer ao blaze as informações necessárias para fazer as substituições corretas. |
toolchain_identifier
|
obrigatório O identificador exclusivo do conjunto de ferramentas na versão do crosstool. Deve ser possível usá-lo como um nome de diretório em um caminho. Ele precisa corresponder ao seguinte regex: [a-zA-Z_][\.\- \w]* |
host_system_name
|
string; ou None
o padrão é None Ignorado. |
target_system_name
|
obrigatório O nome do sistema GNU. |
target_cpu
|
obrigatório A string da arquitetura de destino. |
target_libc
|
obrigatório A string da versão da libc (por exemplo, "glibc-2.2.2"). |
compiler
|
obrigatório A string da versão do compilador (por exemplo, "gcc-4.1.1"). |
abi_version
|
string; ou None
o padrão é None A abi em uso, que é uma versão gcc. Por exemplo: “gcc-3.4” |
abi_libc_version
|
string; ou None
o padrão é None A versão da glibc usada pela abi que estamos usando. |
tool_paths
|
o padrão é [] Locais das ferramentas. Argumentos:
|
make_variables
|
o padrão é [] Uma variável do make que é acessível para as regras. |
builtin_sysroot
|
string; ou None
o padrão é None O sysroot integrado. Se esse atributo não estiver presente, o Bazel não vai permitir o uso de uma sysroot diferente, ou seja, com a opção --grte_top. |
cc_target_os
|
string; ou None
o padrão é None Somente para uso interno. Não use. |
create_compilation_context
CompilationContext cc_common.create_compilation_context(headers=unbound, system_includes=unbound, includes=unbound, quote_includes=unbound, framework_includes=unbound, defines=unbound, local_defines=unbound)Cria uma
CompilationContext
.
Parâmetros
Parâmetro | Descrição |
---|---|
headers
|
o padrão é unbound Conjunto de cabeçalhos necessários para compilar este destino |
system_includes
|
o padrão é unbound Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por sinais de maior e menor, ou seja, #include <foo/bar/header.h>. Eles podem ser relativos à raiz de execução ou absolutos. Normalmente passado com -isystem |
includes
|
o padrão é unbound Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por colchete angular e aspas.Normalmente, passado com -I |
quote_includes
|
o padrão é unbound Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por aspas, ou seja, #include "foo/bar/header.h". Eles podem ser relativos à raiz de execução ou absolutos. Normalmente passado com -iquote |
framework_includes
|
o padrão é unbound Conjunto de caminhos de pesquisa de framework para arquivos de cabeçalho (somente na plataforma Apple) |
defines
|
o padrão é unbound Conjunto de definições necessárias para compilar esse destino. Cada definição é uma string. Propagada de forma transitiva para dependentes. |
local_defines
|
o padrão é unbound Conjunto de definições necessárias para compilar esse destino. Cada definição é uma string. Não propagados de forma transitiva para dependentes. |
create_compilation_outputs
CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)Cria o objeto de saídas de compilação.
Parâmetros
Parâmetro | Descrição |
---|---|
objects
|
depset; ou None
o padrão é None Lista de arquivos de objetos. |
pic_objects
|
depset; ou None
o padrão é None Lista de arquivos de objeto pic. |
create_compile_variables
Variables cc_common.create_compile_variables(cc_toolchain, feature_configuration, source_file=None, output_file=None, user_compile_flags=None, include_directories=None, quote_include_directories=None, system_include_directories=None, framework_include_directories=None, preprocessor_defines=None, thinlto_index=None, thinlto_input_bitcode_file=None, thinlto_output_object_file=None, use_pic=False, add_legacy_cxx_options=False, variables_extension=unbound)Retorna variáveis usadas para ações de compilação.
Parâmetros
Parâmetro | Descrição |
---|---|
cc_toolchain
|
obrigatório cc_Dataset para o qual estamos criando variáveis de compilação. |
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
source_file
|
o padrão é None Arquivo de origem opcional para a compilação. Prefira transmitir o arquivo source_file aqui em vez de anexá-lo ao final da linha de comando gerada por cc_common.get_memory_inefficient_command_line, já que o autor do conjunto de ferramentas pode especificar e posicionar corretamente as flags do compilador. |
output_file
|
o padrão é None Arquivo de saída opcional da compilação. Prefira transmitir o output_file aqui em vez de anexá-lo ao final da linha de comando gerada por cc_common.get_memory_inefficiency_command_line. Assim, o autor do conjunto de ferramentas poderá especificar e posicionar as flags do compilador corretamente. |
user_compile_flags
|
sequência de strings ou None ;
o padrão é None Lista de outras flags de compilação (copts). |
include_directories
|
depset; ou None
o padrão é None Remoção de diretórios "include". |
quote_include_directories
|
depset; ou None
o padrão é None Diretórios de inclusão de aspas. |
system_include_directories
|
depset; ou None
o padrão é None Remoção dos diretórios incluídos do sistema. |
framework_include_directories
|
depset; ou None
o padrão é None A dependência do framework inclui diretórios. |
preprocessor_defines
|
depset; ou None
o padrão é None A desativação do pré-processador define. |
thinlto_index
|
string; ou None
o padrão é None Caminho do arquivo de índice da LTO. |
thinlto_input_bitcode_file
|
string; ou None
o padrão é None Arquivo de bitcode que é inserido no back-end de LTO. |
thinlto_output_object_file
|
string; ou None
o padrão é None Arquivo de objeto gerado pelo back-end de LTO. |
use_pic
|
o padrão é False Quando verdadeiro, a compilação gera um código independente de posição. |
add_legacy_cxx_options
|
o padrão é False Não utilizado. |
variables_extension
|
dict;
o padrão é unbound Um dicionário de variáveis adicionais usadas por ações de compilação. |
create_library_to_link
LibraryToLink cc_common.create_library_to_link(actions, feature_configuration=None, cc_toolchain=None, static_library=None, pic_static_library=None, dynamic_library=None, interface_library=None, pic_objects=unbound, objects=unbound, alwayslink=False, dynamic_library_symlink_path='', interface_library_symlink_path='')Cria
LibraryToLink
Parâmetros
Parâmetro | Descrição |
---|---|
actions
|
obrigatório objeto actions .
|
feature_configuration
|
o padrão é None feature_configuration para ser consultado.
|
cc_toolchain
|
o padrão é None CcToolchainInfo a ser usado.
|
static_library
|
Arquivo ou None
o padrão é None File da biblioteca estática a ser vinculada.
|
pic_static_library
|
Arquivo ou None
o padrão é None File da biblioteca de imagens estática a ser vinculada.
|
dynamic_library
|
Arquivo ou None
o padrão é None File da biblioteca dinâmica a ser vinculada. Sempre usado para o ambiente de execução e para vinculação se interface_library não for transmitido.
|
interface_library
|
Arquivo ou None
o padrão é None File da biblioteca de interfaces a ser vinculada.
|
pic_objects
|
Sequência de Files;
o padrão é unbound Experimental, não usar |
objects
|
Sequência de Files;
o padrão é unbound Experimental, não usar |
alwayslink
|
o padrão é False Define se a biblioteca/objetos estáticos serão vinculados no bloco --whole_archive. |
dynamic_library_symlink_path
|
string;
o padrão é '' Substituir o caminho padrão do link da biblioteca dinâmica no diretório solib. String em branco para usar o padrão. |
interface_library_symlink_path
|
o padrão é '' Substitua o caminho padrão do link da biblioteca de interface no diretório solib. String em branco para usar o padrão. |
create_link_variables
Variables cc_common.create_link_variables(cc_toolchain, feature_configuration, library_search_directories=None, runtime_library_search_directories=None, user_link_flags=None, output_file=None, param_file=None, def_file=None, is_using_linker=True, is_linking_dynamic_library=False, must_keep_debug=True, use_test_only_flags=False, is_static_linking_mode=True)Retorna variáveis de vinculação usadas para ações de vinculação.
Parâmetros
Parâmetro | Descrição |
---|---|
cc_toolchain
|
obrigatório cc_Dataset para o qual estamos criando variáveis de compilação. |
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
library_search_directories
|
None ou depset
o padrão é None Remoção de diretórios em que o vinculador procurará bibliotecas no momento da vinculação. |
runtime_library_search_directories
|
None ou depset
o padrão é None Remoção dos diretórios em que o carregador vai procurar bibliotecas no momento da execução. |
user_link_flags
|
None ou sequência;
o padrão é None Lista de sinalizações de link adicionais (linkopts). |
output_file
|
o padrão é None Caminho do arquivo de saída opcional. |
param_file
|
o padrão é None Caminho opcional do arquivo de parâmetro. |
def_file
|
o padrão é None Caminho de arquivo .def opcional. |
is_using_linker
|
o padrão é True "True" ao usar o vinculador, "False" ao usar o arquivador. O autor da chamada é responsável por manter isso sincronizado com o nome da ação usado (is_using_linker = True para vincular a biblioteca executável ou dinâmica, is_using_linker = False para arquivamento da biblioteca estática). |
is_linking_dynamic_library
|
o padrão é False True ao criar uma biblioteca dinâmica, False quando uma biblioteca executável ou estática. O autor da chamada é responsável por manter isso sincronizado com o nome da ação usado. Este campo será removido assim que b/65151735 for corrigido. |
must_keep_debug
|
o padrão é True Quando definido como "False", o Bazel expõe "strip_debug_symbols" , que geralmente é usada para usar o vinculador para remover símbolos de depuração do arquivo de saída. |
use_test_only_flags
|
o padrão é False Quando definido como verdadeiro, "is_cc_test" será definida. |
is_static_linking_mode
|
o padrão é True Não utilizado. |
create_linker_input
LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)Cria uma
LinkerInput
.
Parâmetros
Parâmetro | Descrição |
---|---|
owner
|
obrigatório O rótulo do destino que produziu todos os arquivos usados nesta entrada. |
libraries
|
None ou depset
o padrão é None Lista de LibraryToLink .
|
user_link_flags
|
None ou depset de strings; ou sequência de stringss;
o padrão é None Sinalizações de links de usuários transmitidas como strings. Aceita [String], [[String]] ou depset(String). O último método não é recomendado, já que é mantido apenas para fins de compatibilidade, e o conjunto é nivelado. Se você quiser propagar user_link_flags por meio de depsets() sem nivelamento, una-as em um LinkerInput para que não sejam niveladas até o final. |
additional_inputs
|
None ou depset
o padrão é None Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação. |
create_linking_context
LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)Cria uma
LinkingContext
.
Parâmetros
Parâmetro | Descrição |
---|---|
linker_inputs
|
None ou depset
o padrão é None Remoção de LinkerInput .
|
libraries_to_link
|
None ou sequência;
o padrão é None Descontinuado. Esse parâmetro está obsoleto e será removido em breve. Não dependa disso. Ele está desativado com --+incompatible_require_linker_input_cc_api . Use essa sinalização para verificar se seu código é compatível com a remoção iminente. Lista com LibraryToLink .
|
user_link_flags
|
None ou sequência;
o padrão é None Descontinuado. Esse parâmetro está obsoleto e será removido em breve. Não dependa disso. Ele está desativado com --+incompatible_require_linker_input_cc_api . Use essa sinalização para verificar se seu código é compatível com a remoção iminente. Lista de sinalizações de links de usuários transmitidas como strings. |
additional_inputs
|
None ou sequência;
o padrão é None Descontinuado. Esse parâmetro está obsoleto e será removido em breve. Não dependa disso. Ele está desativado com --+incompatible_require_linker_input_cc_api . Use essa sinalização para verificar se seu código é compatível com a remoção iminente. Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação. |
create_linking_context_from_compilation_outputs
tuple cc_common.create_linking_context_from_compilation_outputs(actions, feature_configuration, cc_toolchain, compilation_outputs, user_link_flags=[], linking_contexts=[], name, language='c++', alwayslink=False, additional_inputs=[], disallow_static_libraries=False, disallow_dynamic_library=False)É usada para criar regras de biblioteca que possam propagar informações downstream a fim de serem vinculadas depois por uma regra de nível superior que faça vinculação transitiva para criar uma biblioteca executável ou dinâmica. Retorna a tupla de (
CcLinkingContext
, CcLinkingOutputs
).
Parâmetros
Parâmetro | Descrição |
---|---|
actions
|
obrigatório objeto actions .
|
feature_configuration
|
obrigatóriofeature_configuration para ser consultado.
|
cc_toolchain
|
obrigatórioCcToolchainInfo provedor a ser usado.
|
compilation_outputs
|
obrigatório Saídas de compilação contendo arquivos de objeto a serem vinculados. |
user_link_flags
|
o padrão é [] Lista adicional de opções de vinculação. |
linking_contexts
|
o padrão é [] Bibliotecas de dependências. Essas bibliotecas serão vinculadas ao artefato de saída da chamada link(), seja um binário ou uma biblioteca. |
name
|
obrigatório Isso é usado para nomear os artefatos de saída das ações criadas por esse método. |
language
|
o padrão é 'c++' No momento, só há suporte para C++. Não use esse parâmetro. |
alwayslink
|
o padrão é False Indica se a biblioteca precisa estar sempre vinculada. |
additional_inputs
|
o padrão é [] Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação. |
disallow_static_libraries
|
o padrão é False Define se bibliotecas estáticas precisam ser criadas. |
disallow_dynamic_library
|
o padrão é False Define se uma biblioteca dinâmica precisa ser criada. |
do_not_use_tools_cpp_compiler_present
None
cc_common.do_not_use_tools_cpp_compiler_present
Não use este campo, ele apenas ajuda na migração de config_setting.values{'compiler') para config_settings.flag_values{'@bazel_tools//tools/cpp:compiler'}
get_environment_variables
dict cc_common.get_environment_variables(feature_configuration, action_name, variables)Retorna variáveis de ambiente a serem definidas para determinada ação.
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
action_name
|
obrigatório Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) |
variables
|
obrigatório Crie variáveis a serem usadas para expansão de modelo. |
get_execution_requirements
sequence cc_common.get_execution_requirements(feature_configuration, action_name)Retorna os requisitos de execução para uma determinada ação.
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
action_name
|
obrigatório Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) |
get_memory_inefficient_command_line
sequence cc_common.get_memory_inefficient_command_line(feature_configuration, action_name, variables)Retorna sinalizações de linha de comando simplificadas para determinada ação, usando variáveis fornecidas para expansão. Nivela conjuntos aninhados e, idealmente, não deve ser usado, ou pelo menos não deve sobreviver à análise. O trabalho na função eficiente de memória que retorna Args está em andamento.
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
action_name
|
obrigatório Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) |
variables
|
obrigatório Crie variáveis a serem usadas para expansões de modelo. |
get_tool_for_action
string cc_common.get_tool_for_action(feature_configuration, action_name)Retorna o caminho da ferramenta para uma ação específica.
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
action_name
|
obrigatório Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) |
is_enabled
bool cc_common.is_enabled(feature_configuration, feature_name)Retorna "True" se um determinado recurso está ativado na configuração do recurso.
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
obrigatório Configuração do recurso a ser consultado. |
feature_name
|
obrigatório Nome do recurso. |
link
CcLinkingOutputs cc_common.link(actions, feature_configuration, cc_toolchain, compilation_outputs=None, user_link_flags=[], linking_contexts=[], name, language='c++', output_type='executable', link_deps_statically=True, stamp=0, additional_inputs=[], additional_outputs=unbound)Deve ser usado para vinculação transitiva de C++.
Parâmetros
Parâmetro | Descrição |
---|---|
actions
|
obrigatório objeto actions .
|
feature_configuration
|
obrigatóriofeature_configuration para ser consultado.
|
cc_toolchain
|
obrigatórioCcToolchainInfo provedor a ser usado.
|
compilation_outputs
|
CcCompilationOutputs; ou None
o padrão é None Saídas de compilação contendo arquivos de objeto a serem vinculados. |
user_link_flags
|
o padrão é [] Lista adicional de opções do vinculador. |
linking_contexts
|
o padrão é [] Vinculação de contextos de dependências que serão vinculados ao contexto de vinculação gerado por esta regra. |
name
|
obrigatório Isso é usado para nomear os artefatos de saída das ações criadas por esse método. |
language
|
o padrão é 'c++' No momento, só há suporte para C++. Não use esse parâmetro. |
output_type
|
o padrão é 'executable' Pode ser "executável" ou "dynamic_library". |
link_deps_statically
|
o padrão é True Verdadeiro para vincular dependências estaticamente e Falso dinamicamente. |
stamp
|
o padrão é 0 Indica se informações de compilação serão incluídas no executável vinculado, se output_type for "executável". Se 1, as informações da versão serão sempre incluídas. Se 0 (as informações de build padrão são sempre excluídas. Se for -1, usa o comportamento padrão, que pode ser substituído pela sinalização --[no]stamp. Essa definição precisa ser deixada sem definição (ou definida como 0) ao gerar a saída executável para regras de teste. |
additional_inputs
|
sequência ou depset
o padrão é [] Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação. |
additional_outputs
|
sequência
o padrão é unbound Para saídas adicionais para a ação de vinculação, por exemplo: arquivos de mapa. |
merge_compilation_contexts
CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])Mescla vários
CompilationContexts
s em um.
Parâmetros
Parâmetro | Descrição |
---|---|
compilation_contexts
|
o padrão é [] Lista de CompilationContexts s a serem mescladas. Os cabeçalhos de cada contexto serão exportados pelos campos diretos no provedor retornado.
|
merge_compilation_outputs
CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])Mesclar saídas de compilação.
Parâmetros
Parâmetro | Descrição |
---|---|
compilation_outputs
|
o padrão é [] |