Regras do Objective-C

Informar um problema Ver código-fonte

Regras

biblioteca_j2objc

Ver origem da regra
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

Essa regra usa J2ObjC para converter arquivos de origem Java em Objective-C, que pode ser usado como dependências de regras objc_library e bbcc. Informações detalhadas sobre o J2ObjC podem ser encontradas no site do J2ObjC (link em inglês).

As sinalizações de transcompilação personalizadas J2ObjC podem ser especificadas usando a sinalização de build --j2objc_translation_flags na linha de comando.

Os arquivos traduzidos incluídos em um destino j2objc_library serão compilados usando a configuração de compilação padrão, a mesma configuração das origens de uma regra de objc_library sem opções de compilação especificadas nos atributos.

Além disso, a duplicação do código gerado é eliminada no nível da segmentação, não no nível da origem. Se você tiver dois destinos Java diferentes que incluam os mesmos arquivos de origem Java, talvez veja um erro de símbolo duplicado no momento da vinculação. A maneira correta de resolver esse problema é mover os arquivos de origem Java compartilhados para um destino comum separado que pode ser usado.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

deps

List of labels; optional

Uma lista de destinos j2objc_library, java_library, java_import e java_proto_library que contêm arquivos Java a serem transcompilados para Objective-C.

Todos os destinos java_library e java_import que podem ser alcançados transitivamente por meio de exports, deps e runtime_deps serão traduzidos e compilados, incluindo arquivos gerados pelo processamento de anotações Java. Não há suporte para os destinos de código>java_import sem srcjar especificado.

A tradução J2ObjC funciona de maneira diferente, dependendo do tipo de arquivos de origem Java incluídos no fechamento transitivo. Para cada arquivo de origem .java incluído em srcs de java_library, um arquivo de origem .h e .m correspondente vai ser gerado. Para cada jar de origem incluído em srcs de java_library ou srcjar de java_import, um arquivo de origem .h e .m correspondente será gerado com todo o código desse jar.

Os usuários podem importar os arquivos de cabeçalho gerados por J2ObjC no código. Os caminhos de importação desses arquivos são o caminho relativo raiz dos artefatos Java originais. Por exemplo, //some/package/foo.java tem um caminho de importação de some/package/foo.h e //some/package/bar.srcjar tem some/package/bar.h

Se as regras proto_library estiverem no fechamento transitivo dela, os protótipos J2ObjC também serão gerados, compilados e vinculados no nível binário. Para o proto //some/proto/foo.proto, os usuários podem referenciar o código gerado usando o caminho de importação some/proto/foo.j2objc.pb.h.

entry_classes

List of strings; optional

A lista de classes Java com versões ObjC traduzidas serão referenciadas diretamente pelo código ObjC do usuário. Este atributo é obrigatório se a sinalização --j2objc_dead_code_removal estiver ativada. As classes Java precisam ser identificadas nos nomes canônicos, conforme definido pela especificação da linguagem Java. Quando a sinalização --j2objc_dead_code_removal é especificada, a lista de classes de entrada será coletada de forma transitiva e usada como pontos de entrada para realizar uma análise de código morto. As classes não usadas serão removidas do pacote de apps ObjC final.
jre_deps

List of labels; optional

A lista de outras bibliotecas de emulação do JRE exigidas por todo o código Java traduzido pela regra j2objc_library. Somente a funcionalidade principal do JRE é vinculada por padrão.

importação_objc

Ver origem da regra
objc_import(name, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)

Essa regra encapsula uma biblioteca estática já compilada na forma de um arquivo .a. Ele também permite exportar cabeçalhos e recursos usando os mesmos atributos aceitos pelo objc_library.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

hdrs

List of labels; optional

A lista de arquivos de cabeçalho C, C++, Objective-C e Objective-C++ publicados por essa biblioteca para ser incluída por origens em regras dependentes.

Esses cabeçalhos descrevem a interface pública da biblioteca e vão ser disponibilizados para inclusão nesta origem ou em regras dependentes. Os cabeçalhos que não devem ser incluídos por um cliente desta biblioteca precisam ser listados no atributo src.

Eles serão compilados separadamente da fonte, se os módulos estiverem ativados.

Boolean; optional; default is False

Se for 1, qualquer pacote ou binário que dependa (direta ou indiretamente) nessa biblioteca será vinculado a todos os arquivos de objetos para os arquivos listados em srcs e non_arc_srcs, mesmo que alguns não contenham símbolos referenciados pelo binário. Isso é útil quando o código não é chamado explicitamente por código no binário, por exemplo, se o código é registrado para receber algum callback fornecido por algum serviço.
archives

List of labels; required

A lista de arquivos .a fornecida para destinos de Objective-C que dependem desse destino.
includes

List of strings; optional

Lista de #include/#import caminhos de pesquisa a serem adicionados a esse destino e todos os aplicáveis. Isso é feito para oferecer suporte a bibliotecas de terceiros e de código aberto que não especificam todo o caminho do espaço de trabalho nas instruções #import/#include.

Os caminhos são interpretados em relação ao diretório do pacote e as raízes genfiles e bin (por exemplo, blaze-genfiles/pkg/includedir e blaze-out/pkg/includedir) são incluídas, além da raiz real do cliente.

Ao contrário de COPTS, essas sinalizações são adicionadas para essa regra e a todas as regras que dependem dela. Observação: as regras dependem das regras. Tenha muito cuidado, porque isso pode ter efeitos abrangentes. Em caso de dúvida, adicione sinalizações "-iquote" a COPTS.

sdk_dylibs

List of strings; optional

Nomes das bibliotecas .dylib do SDK a serem vinculadas. Por exemplo, "libz" ou "libfile". A "libc++" é incluída automaticamente se o binário tiver origens C++ ou Objective-C++ na árvore de dependências. Ao vincular um binário, todas as bibliotecas nomeadas no gráfico de dependência transitiva desse binário são usadas.
sdk_frameworks

List of strings; optional

Nomes dos frameworks do SDK que serão vinculados (por exemplo, "AddressBook", "QuartzCore"). "UIKit" e "Foundation" são sempre incluídos ao criar para as plataformas iOS, tvOS e watchOS. No macOS, somente "Básico" é sempre incluído.

Ao vincular um binário da Apple de nível superior, todos os frameworks do SDK listados no gráfico de dependências transitivas desse binário são vinculados.

sdk_includes

List of strings; optional

Lista de #include/#import caminhos de pesquisa a serem adicionados a esse destino e todos os destinos, em que cada caminho é relativo a $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

A lista de arquivos C, C++, Objective-C e Objective-C++ incluídos como cabeçalhos por arquivos de origem nesta regra ou por usuários dessa biblioteca. Ao contrário do hdrs, eles não serão compilados separadamente das origens.
weak_sdk_frameworks

List of strings; optional

Nomes dos frameworks do SDK que precisam ser vinculados. Por exemplo, "MediaAccessibility". Ao contrário dos frameworks do SDK vinculados regularmente, os símbolos de frameworks com vinculação fraca não vão causar um erro se não estiverem presentes no momento da execução.

biblioteca objc

Ver origem da regra
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

Essa regra produz uma biblioteca estática com base nos arquivos de origem do Objective-C fornecidos.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

deps

List of labels; optional

A lista de destinos vinculados para formar o pacote final.
srcs

List of labels; optional

A lista de arquivos de origem e de cabeçalho C, C++, Objective-C e Objective-C++ e/ou arquivos de origem assembles `.s`, `.S` ou `.asm`), que são processados para criar o destino da biblioteca. Estes são seus arquivos registrados, mais os arquivos gerados. Os arquivos de origem são compilados em arquivos .o com o Clang. Os arquivos principais podem ser incluídos/importados por qualquer origem ou cabeçalho no atributo src do destino, mas não por cabeçalhos em hdrs ou destinos que dependam desta regra. Além disso, os arquivos .o pré-compilados podem ser fornecidos como srcs. Tenha cuidado para garantir a consistência na arquitetura dos arquivos .o fornecidos e do build para evitar erros de vinculação de símbolos ausentes.
hdrs

List of labels; optional

A lista de arquivos de cabeçalho C, C++, Objective-C e Objective-C++ publicados por essa biblioteca para ser incluída por origens em regras dependentes.

Esses cabeçalhos descrevem a interface pública da biblioteca e vão ser disponibilizados para inclusão nesta origem ou em regras dependentes. Os cabeçalhos que não devem ser incluídos por um cliente desta biblioteca precisam ser listados no atributo src.

Eles serão compilados separadamente da fonte, se os módulos estiverem ativados.

Boolean; optional; default is False

Se for 1, qualquer pacote ou binário que dependa (direta ou indiretamente) nessa biblioteca será vinculado a todos os arquivos de objetos para os arquivos listados em srcs e non_arc_srcs, mesmo que alguns não contenham símbolos referenciados pelo binário. Isso é útil quando o código não é chamado explicitamente por código no binário, por exemplo, se o código é registrado para receber algum callback fornecido por algum serviço.
copts

List of strings; optional

Sinalizações extras a serem transmitidas para o compilador. Sujeito à substituição"Criar variável" e à tokenização do shell do Bourne. Essas sinalizações serão aplicadas somente a esse destino, e não àquelas de que ele depende ou aos que dependem dele.

Para o projeto Xcode gerado, os caminhos do diretório especificados usando sinalizações "-I" nos códigos são analisados, prefixados com "$(WORKSPACE_ROOT)/" se eles forem caminhos relativos e adicionados aos caminhos de pesquisa de cabeçalho do destino do Xcode associado.

defines

List of strings; optional

Sinalizações extras de -D a serem transmitidas para o compilador. Elas precisam estar no formato KEY=VALUE ou simplesmente KEY e são transmitidas não apenas para o compilador desse destino (como copts ), mas também para todas as objc_ definições desse destino. Sujeito à substituição"Criar variável" e à tokenização do shell do Bourne.
enable_modules

Boolean; optional; default is False

Ativa a compatibilidade com o módulo clang (via -fmodules). Definir como 1 permitirá que você @import cabeçalhos do sistema e outros destinos: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

Lista de #include/#import caminhos de pesquisa a serem adicionados a esse destino e todos os aplicáveis. Isso é feito para oferecer suporte a bibliotecas de terceiros e de código aberto que não especificam todo o caminho do espaço de trabalho nas instruções #import/#include.

Os caminhos são interpretados em relação ao diretório do pacote e as raízes genfiles e bin (por exemplo, blaze-genfiles/pkg/includedir e blaze-out/pkg/includedir) são incluídas, além da raiz real do cliente.

Ao contrário de COPTS, essas sinalizações são adicionadas para essa regra e a todas as regras que dependem dela. Observação: as regras dependem das regras. Tenha muito cuidado, porque isso pode ter efeitos abrangentes. Em caso de dúvida, adicione sinalizações "-iquote" a COPTS.

linkopts

List of strings; optional

Sinalizações extras a serem transmitidas para o vinculador.
module_map

Label; optional

Um mapa de módulo Clang personalizado para esse destino. O uso de um mapa de módulo personalizado não é recomendado. A maioria dos usuários precisa usar os mapas de módulos gerados pelo Bazel. Se especificado, o Bazel não gerará um mapa de módulo para esse destino, mas transmitirá o mapa de módulo fornecido ao compilador.
module_name

String; optional

Define o nome do módulo para esse destino. Por padrão, o nome do módulo é o caminho de destino com todos os símbolos especiais substituídos por _. Por exemplo, //foo/baz:bar pode ser importado como foo_baz_bar.
non_arc_srcs

List of labels; optional

A lista de arquivos Objective-C processados para criar o destino da biblioteca que NÃO usa ARC. Os arquivos nesse atributo são tratados de maneira muito semelhante aos arquivos no atributo src, mas são compilados sem o ARC ativado.
pch

Label; optional

Arquivo de cabeçalho para preceder a cada arquivo de origem que está sendo compilado (arco e não arco). O uso de arquivos pch não é recomendado em arquivos BUILD, e isso precisa ser considerado suspenso. Como os arquivos pch não são pré-compilados, isso não é uma melhoria de velocidade de compilação, mas apenas uma dependência global. Do ponto de vista da eficiência de compilação, você é realmente melhor, incluindo o que precisa diretamente nas fontes onde precisa.
sdk_dylibs

List of strings; optional

Nomes das bibliotecas .dylib do SDK a serem vinculadas. Por exemplo, "libz" ou "libfile". A "libc++" é incluída automaticamente se o binário tiver origens C++ ou Objective-C++ na árvore de dependências. Ao vincular um binário, todas as bibliotecas nomeadas no gráfico de dependência transitiva desse binário são usadas.
sdk_frameworks

List of strings; optional

Nomes dos frameworks do SDK que serão vinculados (por exemplo, "AddressBook", "QuartzCore"). "UIKit" e "Foundation" são sempre incluídos ao criar para as plataformas iOS, tvOS e watchOS. No macOS, somente "Básico" é sempre incluído.

Ao vincular um binário da Apple de nível superior, todos os frameworks do SDK listados no gráfico de dependências transitivas desse binário são vinculados.

sdk_includes

List of strings; optional

Lista de #include/#import caminhos de pesquisa a serem adicionados a esse destino e todos os destinos, em que cada caminho é relativo a $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

A lista de arquivos C, C++, Objective-C e Objective-C++ incluídos como cabeçalhos por arquivos de origem nesta regra ou por usuários dessa biblioteca. Ao contrário do hdrs, eles não serão compilados separadamente das origens.
weak_sdk_frameworks

List of strings; optional

Nomes dos frameworks do SDK que precisam ser vinculados. Por exemplo, "MediaAccessibility". Ao contrário dos frameworks do SDK vinculados regularmente, os símbolos de frameworks com vinculação fraca não vão causar um erro se não estiverem presentes no momento da execução.

códigos_disponíveis_

Ver origem da regra
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

Dois destinos dessa regra podem depender de uma instância de regra xcode_config para indicar as versões de código remoto disponíveis remotamente. Isso permite selecionar uma versão xcode oficial entre os xcodes disponíveis coletivamente.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

default

Label; required; nonconfigurable

A versão padrão do Xcode para esta plataforma.
versions

List of labels; optional; nonconfigurable

As versões do xcode disponíveis nesta plataforma.

xcode_config

Ver origem da regra
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

Um único destino dessa regra pode ser referenciado pela sinalização de compilação --xcode_version_config para traduzir a sinalização --xcode_version em uma versão oficial do Xcode. Isso permite selecionar uma versão xcode oficial de diversos aliases registrados.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

default

Label; optional; nonconfigurable

A versão oficial padrão do xcode a ser usada. A versão especificada pelo destino xcode_version fornecido vai ser usada se nenhuma sinalização de build xcode_version for especificada. Isso é necessário se algum versions estiver definido. Isso não poderá ser definido se remote_versions ou local_versions for definido.
local_versions

Label; optional; nonconfigurable

O xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

O xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

Aceitas: xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set.

versão_do_código

Ver origem da regra
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

Representa uma única versão oficial do Xcode, com aliases aceitáveis para essa versão. Veja a regra xcode_config.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

default_ios_sdk_version

String; optional; nonconfigurable

A versão do SDK do iOS, que é usada por padrão quando esta versão do Xcode está sendo usada. A sinalização de build ios_sdk_version substituirá o valor especificado aqui.
default_macos_sdk_version

String; optional; nonconfigurable

A versão do SDK do macosx que é usada por padrão quando esta versão do xcode é usada. A sinalização de build macos_sdk_version substituirá o valor especificado aqui.
default_tvos_sdk_version

String; optional; nonconfigurable

A versão do SDK do tvos usada por padrão quando esta versão do Xcode está sendo usada. A sinalização de build tvos_sdk_version substituirá o valor especificado aqui.
default_watchos_sdk_version

String; optional; nonconfigurable

A versão do SDK do Watchos usada por padrão quando esta versão do Xcode está sendo usada. A sinalização de build watchos_sdk_version substituirá o valor especificado aqui.
version

String; required; nonconfigurable

O número oficial de uma versão do Xcode.