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)
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
required Configuração do recurso a ser consultada. |
action_name
|
required Nome do action_config. |
CcToolchainInfo
Provider cc_common.CcToolchainInfo
configure_features
FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])
Parâmetros
Parâmetro | Descrição |
---|---|
ctx
|
ctx ou None .
O padrão é None . O contexto da regra. |
cc_toolchain
|
cc_toolchain necessário para o qual configuramos recursos. |
language
|
string ou None ;
o padrão é None A linguagem a ser configurada: C++ ou Objective-C (padrão C++) |
requested_features
|
O padrão é [] Lista de recursos a serem ativados. |
unsupported_features
|
O padrão é [] Lista de recursos que não têm suporte da 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)
CcToolchainConfigInfo
Parâmetros
Parâmetro | Descrição |
---|---|
ctx
|
required O contexto da regra. |
features
|
O padrão é [] Contém todas as especificações de flag de um recurso. Argumentos:
- provides contém o nome de um recurso ou configuração de ação diferente que queremos ativar.- provides contém o mesmo valor que um "fornece" em um recurso ou configuração de ação diferente que queremos ativar. Use isso para garantir que recursos incompatíveis não sejam ativados acidentalmente ao mesmo tempo, o que pode levar a erros difíceis de diagnosticar no 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ção ocorre com a mesma semântica dos recursos: um recurso pode "requerer" ou "implorar" uma configuração de ação da mesma forma que outro recurso. Argumentos:
|
artifact_name_patterns
|
default é [] 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 são 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 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 precisarão usar %sysroot% em vez do caminho de inclusão e especificar o atributo sysroot para fornecer a blaze as informações necessárias para fazer as substituições corretas. |
toolchain_identifier
|
obrigatório O identificador exclusivo da cadeia de ferramentas na versão do crosstool. É necessário que seja possível usar isso 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
|
required O nome do sistema GNU. |
target_cpu
|
required A string de arquitetura de destino. |
target_libc
|
required A string de versão da libc (por exemplo, "glibc-2.2.2"). |
compiler
|
required A string de 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 do gcc. Por exemplo: "gcc-3.4" |
abi_libc_version
|
string ou None ;
o padrão é None A versão do glibc usada pela abi que estamos usando. |
tool_paths
|
O padrão é [] Localizações da ferramenta. Argumentos:
|
make_variables
|
padrão é [] Uma variável de make que é acessível para regras. |
builtin_sysroot
|
string ou None ;
o padrão é None . O sysroot integrado. Se esse atributo não estiver presente, o Bazel não permitirá o uso de um sysroot diferente, ou seja, pela 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)
CompilationContext
.
Parâmetros
Parâmetro | Descrição |
---|---|
headers
|
O padrão é unbound Conjunto de cabeçalhos necessários para compilar esse destino |
system_includes
|
O padrão é unbound Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por colchetes, ou seja, #include <foo/bar/header.h>. Eles podem ser relativos à raiz de execução ou absolutos. Geralmente transmitido com -isystem |
includes
|
O padrão é unbound Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por colchetes e aspas.Normalmente é transmitido 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". Elas podem ser relativas ao exec root ou absolutas. Geralmente transmitido com -iquote |
framework_includes
|
O padrão é unbound Conjunto de caminhos de pesquisa do framework para arquivos de cabeçalho (somente plataforma Apple) |
defines
|
O padrão é unbound Conjunto de definições necessárias para compilar esse destino. Cada definição é uma string. Propagado transitivamente 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 é propagado transitivamente para dependentes. |
create_compilation_outputs
CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)
Parâmetros
Parâmetro | Descrição |
---|---|
objects
|
depset ou None ;
o padrão é None Lista de arquivos de objeto. |
pic_objects
|
depset ou None ;
o padrão é None Lista de arquivos de objetos de imagem. |
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)
Parâmetros
Parâmetro | Descrição |
---|---|
cc_toolchain
|
cc_toolchain necessário para o qual estamos criando variáveis de build. |
feature_configuration
|
required Configuração do recurso a ser consultada. |
source_file
|
O padrão é None , arquivo de origem opcional para a compilação. É recomendável transmitir "source_file" aqui em vez de adicioná-lo ao final da linha de comando gerada em cc_common.get_memory_inefficient_command_line. Assim, o autor da cadeia 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. É recomendável transmitir output_file aqui em vez de adicioná-lo ao final da linha de comando gerada em cc_common.get_memory_inefficient_command_line, porque o autor da cadeia de ferramentas pode especificar e posicionar corretamente as flags do compilador. |
user_compile_flags
|
Sequência de strings ou None ;
O padrão é None Lista de flags de compilação adicionais (copts). |
include_directories
|
depset ou None ;
o padrão é None Depset de inclusão de diretórios. |
quote_include_directories
|
depset ou None ;
o padrão é None Depset de diretórios de inclusão de cotações. |
system_include_directories
|
depset ou None ;
o padrão é None Depset de diretórios de inclusão do sistema. |
framework_include_directories
|
depset ou None ;
o padrão é None Depset do framework inclui diretórios. |
preprocessor_defines
|
depset ou None .
O padrão é None . Depset de definições do pré-processador. |
thinlto_index
|
string ou None .
O padrão é None . Caminho do arquivo de índice LTO. |
thinlto_input_bitcode_file
|
string ou None ;
o padrão é None Arquivo de bytecode que é a entrada para o back-end do LTO. |
thinlto_output_object_file
|
string ou None ;
o padrão é None Arquivo de objeto gerado pelo back-end do 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 usado. |
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='')
LibraryToLink
Parâmetros
Parâmetro | Descrição |
---|---|
actions
|
O objeto
actions é obrigatório. |
feature_configuration
|
O padrão é None feature_configuration para ser consultado.
|
cc_toolchain
|
O padrão é o None CcToolchainInfo provedor 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 estática de pic a ser vinculada.
|
dynamic_library
|
Arquivo ou None ;
o padrão é None File da biblioteca dinâmica a ser vinculada. Sempre usado para execução e vinculação se interface_library não for transmitido.
|
interface_library
|
Arquivo ou None ;
o padrão é None File da biblioteca de interface a ser vinculada.
|
pic_objects
|
sequência de arquivos:
o padrão é unbound Experimental, não use |
objects
|
sequência de arquivos:
o padrão é unbound Experimental, não use |
alwayslink
|
O padrão é False Indica se a biblioteca/objetos estáticos serão vinculados no bloco --whole_archive. |
dynamic_library_symlink_path
|
string;
O padrão é '' Ignora o caminho padrão do link da biblioteca dinâmica no diretório solib. String vazia 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 vazia 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)
Parâmetros
Parâmetro | Descrição |
---|---|
cc_toolchain
|
cc_toolchain necessário para o qual estamos criando variáveis de build. |
feature_configuration
|
required Configuração do recurso a ser consultada. |
library_search_directories
|
None ou depset.
O padrão é None . Depset de diretórios em que o vinculador vai procurar bibliotecas no momento da vinculação. |
runtime_library_search_directories
|
None ou depset.
O padrão é None . Depset de diretórios em que o loader vai procurar bibliotecas no momento da execução. |
user_link_flags
|
None ou sequência.
O padrão é None . Lista de flags de link adicionais (linkopts). |
output_file
|
O padrão é None Caminho de arquivo de saída opcional. |
param_file
|
O padrão é None Caminho do arquivo de parâmetro opcional. |
def_file
|
O padrão é None Caminho de arquivo .def opcional. |
is_using_linker
|
O padrão é True Verdadeiro ao usar o vinculador, falso ao usar o arquivador. O autor da chamada é responsável por manter essa sincronização com o nome da ação usada (is_using_linker = True para vincular executáveis ou bibliotecas dinâmicas, is_using_linker = False para arquivar bibliotecas estáticas). |
is_linking_dynamic_library
|
O padrão é False Verdadeiro ao criar uma biblioteca dinâmica, falso ao criar uma biblioteca executável ou estática. O autor da chamada é responsável por manter isso sincronizado com o nome da ação usada. Esse campo será removido quando o b/65151735 for corrigido. |
must_keep_debug
|
O padrão é True Quando definido como False, o Bazel vai expor a variável "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, a variável "is_cc_test" será definida. |
is_static_linking_mode
|
O padrão é True Não usado. |
create_linker_input
LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)
LinkerInput
.
Parâmetros
Parâmetro | Descrição |
---|---|
owner
|
required 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 strings;
O padrão é None Flags de vinculação do usuário transmitidas como strings. Aceita [String], [[String]] ou depset(String). O segundo é desencorajado porque é mantido apenas para fins de compatibilidade. O depset é achatado. Se você quiser propagar user_link_flags usando depsets() não achatados, coloque-os em um LinkerInput para que não sejam achatados até o fim. |
additional_inputs
|
None ou depset.O padrão é None . Para outras entradas na ação de vinculação, por exemplo, vinculação de scripts. |
create_linking_context
LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)
LinkingContext
.
Parâmetros
Parâmetro | Descrição |
---|---|
linker_inputs
|
None ou depset.
O padrão é None Depset de LinkerInput .
|
libraries_to_link
|
None ou sequência.
O padrão é None . Descontinuado. Este parâmetro foi descontinuado e será removido em breve. Não dependa dele. Ele está desativado com --+incompatible_require_linker_input_cc_api . Use essa flag para verificar se o código é compatível com a remoção iminente. Lista de LibraryToLink .
|
user_link_flags
|
None ou sequência.
O padrão é None . Descontinuado. Este parâmetro foi descontinuado e será removido em breve. Não dependa dele. Ele está desativado com --+incompatible_require_linker_input_cc_api . Use essa flag para verificar se o código é compatível com a remoção iminente. Lista de flags de vinculação do usuário transmitidas como strings. |
additional_inputs
|
None ou sequência.
O padrão é None . Descontinuado. Este parâmetro foi descontinuado e será removido em breve. Não dependa dele. Ele está desativado com --+incompatible_require_linker_input_cc_api . Use essa flag para verificar se o código é compatível com a remoção iminente. Para outras entradas na ação de vinculação, por exemplo, vinculação de scripts. |
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)
CcLinkingContext
, CcLinkingOutputs
).
Parâmetros
Parâmetro | Descrição |
---|---|
actions
|
O objeto
actions é obrigatório. |
feature_configuration
|
feature_configuration para ser consultado.
|
cc_toolchain
|
necessárioCcToolchainInfo provedor a ser usado.
|
compilation_outputs
|
required Saídas de compilação que contêm arquivos de objeto para vincular. |
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
|
required É usado para nomear os artefatos de saída das ações criadas por esse método. |
language
|
O padrão é 'c++' . No momento, apenas C++ é compatível. Não use esse parâmetro. |
alwayslink
|
O padrão é False Indica se essa biblioteca precisa ser sempre vinculada. |
additional_inputs
|
O padrão é [] Para outras entradas na ação de vinculação, por exemplo, vinculação de scripts. |
disallow_static_libraries
|
O padrão é False Indica se as bibliotecas estáticas precisam ser criadas. |
disallow_dynamic_library
|
default é False Indica 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
get_environment_variables
dict cc_common.get_environment_variables(feature_configuration, action_name, variables)
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
required Configuração do recurso a ser consultada. |
action_name
|
required 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
|
required Crie variáveis para serem usadas na expansão de modelos. |
get_execution_requirements
sequence cc_common.get_execution_requirements(feature_configuration, action_name)
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
required Configuração do recurso a ser consultada. |
action_name
|
required 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)
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
required Configuração do recurso a ser consultada. |
action_name
|
required 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
|
required Build variáveis para serem usadas nas expansões de modelos. |
get_tool_for_action
string cc_common.get_tool_for_action(feature_configuration, action_name)
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
required Configuração do recurso a ser consultada. |
action_name
|
required 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)
Parâmetros
Parâmetro | Descrição |
---|---|
feature_configuration
|
required Configuração do recurso a ser consultada. |
feature_name
|
required 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)
Parâmetros
Parâmetro | Descrição |
---|---|
actions
|
O objeto
actions é obrigatório. |
feature_configuration
|
feature_configuration para ser consultado.
|
cc_toolchain
|
necessárioCcToolchainInfo provedor a ser usado.
|
compilation_outputs
|
CcCompilationOutputs ou None .
O padrão é None . Saídas de compilação que contêm arquivos de objeto para vincular. |
user_link_flags
|
O padrão é [] Lista adicional de opções do vinculador. |
linking_contexts
|
O padrão é [] Vincula os contextos das dependências que serão vinculados ao contexto de vinculação gerado por essa regra. |
name
|
required É usado para nomear os artefatos de saída das ações criadas por esse método. |
language
|
O padrão é 'c++' . No momento, apenas C++ é compatível. Não use esse parâmetro. |
output_type
|
O padrão é 'executable' Pode ser "executable" ou "dynamic_library". |
link_deps_statically
|
O padrão é True . Verdadeiro para vincular dependências de forma estática, falso para vincular de forma dinâmica. |
stamp
|
padrão é 0 Incluir informações de build no executável vinculado, se output_type for "executable". Se 1, as informações do build são sempre incluídas. Se for 0, as informações de build padrão serão sempre excluídas. Se for -1, o comportamento padrão será usado, o que pode ser substituído pela flag --[no]stamp. Ele precisa ser redefinido (ou definido como 0) ao gerar a saída executável para regras de teste. |
additional_inputs
|
sequence ou depset.O padrão é [] . Para outras entradas na ação de vinculação, por exemplo, vinculação de scripts. |
additional_outputs
|
sequência:
o padrão é unbound Para outras saídas da ação de vinculação, por exemplo, arquivos de mapa. |
merge_compilation_contexts
CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])
CompilationContexts
s em um.
Parâmetros
Parâmetro | Descrição |
---|---|
compilation_contexts
|
O padrão é [] Lista de CompilationContexts s a serem mesclados. 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=[])
Parâmetros
Parâmetro | Descrição |
---|---|
compilation_outputs
|
O padrão é [] |