Regras do Objective-C

Informar um problema Ver fonte

Regras

j2objc_library

Exibir 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 para Objective-C, que podem ser usados como dependências das regras objc_library e objc_binary. Veja informações detalhadas sobre o próprio J2ObjC no site do J2ObjC.

As flags personalizadas de transpilação J2ObjC podem ser especificadas usando a flag 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 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 meta, não da origem. Se você tiver dois destinos Java diferentes que incluem os mesmos arquivos de origem Java, um erro de símbolo duplicado poderá ser exibido 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 dependente.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

deps

Lista de rótulos. O padrão é [].

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 exports, deps e runtime_deps serão convertidos e compilados, incluindo arquivos gerados pelo processamento de anotações Java. Não há suporte para destinos code>java_import sem srcjar especificado.

A tradução J2ObjC funciona de maneira diferente, dependendo do tipo dos arquivos de origem Java de origem 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 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 de proto_library estiverem no fechamento transitivo dessa regra, os protos J2ObjC também serão gerados, compilados e vinculados no nível binário. Para //some/proto/foo.proto proto, os usuários podem referenciar o código gerado usando o caminho de importação some/proto/foo.j2objc.pb.h.

entry_classes

Lista de strings. O padrão é [].

A lista de classes Java cujas contrapartes ObjC traduzidas será referenciada diretamente pelo código ObjC do usuário. Esse atributo será obrigatório se a sinalização --j2objc_dead_code_removal estiver ativada. As classes Java precisam ser especificadas 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 é coletada de forma transitiva e usada como pontos de entrada para realizar a análise de códigos inativos. As classes não usadas serão removidas do pacote de apps ObjC final.
jre_deps

Lista de rótulos. O padrão é [].

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

objc_import

Exibir origem da regra
objc_import(name, deps, 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)

Esta 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 compatíveis com objc_library.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

deps

Lista de rótulos. O padrão é [].

A lista de destinos de que o destino depende.
hdrs

Lista de rótulos. O padrão é [].

A lista de arquivos principais C, C++, Objective-C e Objective-C++ publicados por essa biblioteca para serem incluídos pelas fontes em regras dependentes.

Esses cabeçalhos descrevem a interface pública da biblioteca e serão disponibilizados para inclusão por fontes nessa regra ou em regras dependentes. Os cabeçalhos que não serão incluídos por um cliente dessa biblioteca precisarão ser listados no atributo srcs.

Se os módulos estiverem ativados, eles serão compilados separadamente da origem.

Booleano. O padrão é False.

Se for 1, qualquer pacote ou binário que dependa (direta ou indiretamente) dessa biblioteca será vinculado a todos os arquivos de objeto dos arquivos listados em srcs e non_arc_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 código no binário, por exemplo, se seu código for registrado para receber algum callback fornecido por algum serviço.
archives

Lista de rótulos, obrigatório

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

Lista de strings. O padrão é [].

Lista de caminhos de pesquisa de #include/#import a serem adicionados a este destino e a todos os destinos dependentes. Isso oferece 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 os genfiles e as raízes bin (por exemplo, blaze-genfiles/pkg/includedir e blaze-out/pkg/includedir) são incluídos, além da raiz do cliente real.

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

sdk_dylibs

Lista de strings. O padrão é [].

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

Lista de strings. O padrão é [].

Nomes de estruturas do SDK a serem vinculadas (por exemplo, "AddressBook", "QuartzCore"). "UIKit" e "Foundation" são sempre incluídos ao criar para as plataformas iOS, tvOS, visionOS e watchOS. No macOS, apenas "Foundation" é 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ência transitivo desse binário serão vinculados.

sdk_includes

Lista de strings. O padrão é [].

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

Lista de rótulos. O padrão é [].

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

Lista de strings. O padrão é [].

Nomes de frameworks do SDK com que há links fracos. Por exemplo, "MediaAccessibility". Diferentemente dos frameworks do SDK vinculados regularmente, os símbolos de frameworks com vinculação fraca não causam um erro se não estão presentes no ambiente de execução.

objc_library

Exibir 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, implementation_deps, 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 a partir dos arquivos de origem do Objective-C fornecidos.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

deps

Lista de rótulos. O padrão é [].

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

Lista de rótulos. O padrão é [].

A lista de arquivos de origem e cabeçalho C, C++, Objective-C e Objective-C++ e/ou arquivos de origem assembly (".s", ".S" ou ".asm"), que são processados para criar o destino da biblioteca. Estes são seus arquivos de check-in e todos os arquivos gerados. Os arquivos de origem são compilados em arquivos .o com o Clang. Arquivos de cabeçalho podem ser incluídos/importados por qualquer origem ou cabeçalho no atributo srcs desse destino, mas não por cabeçalhos em hdrs ou qualquer destino que dependa dessa regra. Além disso, arquivos .o pré-compilados podem ser fornecidos como srcs. Tenha cuidado para garantir a consistência da arquitetura dos arquivos .o fornecidos e do build para evitar erros do vinculador de símbolos ausentes.
hdrs

Lista de rótulos. O padrão é [].

A lista de arquivos principais C, C++, Objective-C e Objective-C++ publicados por essa biblioteca para serem incluídos pelas fontes em regras dependentes.

Esses cabeçalhos descrevem a interface pública da biblioteca e serão disponibilizados para inclusão por fontes nessa regra ou em regras dependentes. Os cabeçalhos que não serão incluídos por um cliente dessa biblioteca precisarão ser listados no atributo srcs.

Se os módulos estiverem ativados, eles serão compilados separadamente da origem.

Booleano. O padrão é False.

Se for 1, qualquer pacote ou binário que dependa (direta ou indiretamente) dessa biblioteca será vinculado a todos os arquivos de objeto dos arquivos listados em srcs e non_arc_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 código no binário, por exemplo, se seu código for registrado para receber algum callback fornecido por algum serviço.
copts

Lista de strings. O padrão é [].

Sinalizações extras a serem passadas para o compilador. Sujeito à substituição de "Make variables" e à tokenização de shell Bourne. Essas sinalizações se aplicarão somente a esse destino, e não àquelas de que ele depende ou às que dependem dele.

Observe que, para o projeto Xcode gerado, os caminhos de diretório especificados usando flags "-I" em copts são analisados, prefixados com "$(WORKSPACE_ROOT)/" se forem caminhos relativos e adicionados aos caminhos de pesquisa do cabeçalho para o destino do Xcode associado.

defines

Lista de strings. O padrão é [].

Sinalizações -D extras a serem transmitidas para o compilador. Eles precisam estar na forma KEY=VALUE ou simplesmente KEY e são passadas não apenas para o compilador desse destino (como copts), mas também para todas as dependências de objc_ desse destino. Sujeito à substituição de "Make variables" e à tokenização de shell Bourne.
enable_modules

Booleano. O padrão é False.

Ativa o suporte ao módulo clang (via -fmodules). Definir como 1 permite usar @import em cabeçalhos do sistema e outros destinos: @import UIKit; @import path_to_package_target;
implementation_deps

Lista de rótulos. O padrão é [].

A lista de outras bibliotecas de que o destino da biblioteca depende. Ao contrário de deps, os cabeçalhos e os caminhos de inclusão dessas bibliotecas (e todas as dependências transitivas) são usados apenas para compilação dessa biblioteca, e não para bibliotecas que dependem dela. As bibliotecas especificadas com implementation_deps ainda são vinculadas em destinos binários que dependem dessa biblioteca.
includes

Lista de strings. O padrão é [].

Lista de caminhos de pesquisa de #include/#import a serem adicionados a este destino e a todos os destinos dependentes. Isso oferece 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 os genfiles e as raízes bin (por exemplo, blaze-genfiles/pkg/includedir e blaze-out/pkg/includedir) são incluídos, além da raiz do cliente real.

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

linkopts

Lista de strings. O padrão é [].

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

Rótulo; o padrão é None

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

String. O padrão é "".

Define o nome do módulo para este 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

Lista de rótulos. O padrão é [].

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

Rótulo; o padrão é None

Arquivo de cabeçalho para anexar a cada arquivo de origem que está sendo compilado (arco e não arco). O uso de arquivos pch é ativamente desencorajado em arquivos BUILD, e isso deve ser considerado descontinuado. Como os arquivos pch não são pré-compilados, isso não é um aprimoramento da velocidade de compilação. Em vez disso, é apenas uma dependência global. Do ponto de vista da eficiência do build, é melhor incluir o que precisa diretamente nas origens, quando necessário.
sdk_dylibs

Lista de strings. O padrão é [].

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

Lista de strings. O padrão é [].

Nomes de estruturas do SDK a serem vinculadas (por exemplo, "AddressBook", "QuartzCore"). "UIKit" e "Foundation" são sempre incluídos ao criar para as plataformas iOS, tvOS, visionOS e watchOS. No macOS, apenas "Foundation" é 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ência transitivo desse binário serão vinculados.

sdk_includes

Lista de strings. O padrão é [].

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

Lista de rótulos. O padrão é [].

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

Lista de strings. O padrão é [].

Nomes de frameworks do SDK com que há links fracos. Por exemplo, "MediaAccessibility". Diferentemente dos frameworks do SDK vinculados regularmente, os símbolos de frameworks com vinculação fraca não causam um erro se não estão presentes no ambiente de execução.

available_xcodes

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

Dois destinos desta regra podem depender de uma instância de regra xcode_config para indicar as versões do Xcode disponíveis remota e localmente. Isso permite a seleção de uma versão oficial do Xcode entre os disponíveis coletivamente.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

default

Rótulo; não configurável; obrigatório

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

Lista de marcadores; não configurável; o padrão é []

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

xcode_config

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

Um único destino desta regra pode ser referenciado pela sinalização de build --xcode_version_config para traduzir a flag --xcode_version em uma versão oficial aceita do Xcode. Isso permite a seleção de uma versão oficial do xcode entre diversos aliases registrados.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

default

Rótulo; não configurável; o padrão é None

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

Rótulo; não configurável; o padrão é None

Os destinos xcode_version que estão disponíveis localmente. Eles são usados com local_versions para selecionar uma versão mutuamente disponível. Pode não ser definido se versions estiver definido.
remote_versions

Rótulo; não configurável; o padrão é None

Os destinos xcode_version que estão disponíveis remotamente. Eles são usados com remote_versions para selecionar uma versão mutuamente disponível. Pode não ser definido se versions estiver definido.
versions

Lista de marcadores; não configurável; o padrão é []

xcode_version segmentações que podem ser usadas foram aceitas. Se o valor da sinalização de build xcode_version corresponder a um dos aliases ou ao número da versão de qualquer um dos destinos xcode_version fornecidos, o destino correspondente será usado. Ele não poderá ser definido se remote_versions ou local_versions estiver definido.

xcode_version

Exibir origem da regra
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_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. Consulte a regra xcode_config.

Argumentos

Atributos
name

Nome, obrigatório

Um nome exclusivo para o destino.

default_ios_sdk_version

String; não configurável; o padrão é ""

A versão do SDK do iOS usada por padrão quando essa versão do Xcode está sendo usada. A flag de build ios_sdk_version vai substituir o valor especificado aqui.
default_macos_sdk_version

String; não configurável; o padrão é ""

A versão do SDK do macOS usada por padrão quando essa versão do Xcode está sendo usada. A flag de build macos_sdk_version vai substituir o valor especificado aqui.
default_tvos_sdk_version

String; não configurável; o padrão é ""

A versão do SDK tvos usada por padrão quando essa versão do XCode está em uso. A flag de build tvos_sdk_version vai substituir o valor especificado aqui.
default_visionos_sdk_version

String; não configurável; o padrão é ""

A versão do SDK do Visionos usada por padrão quando essa versão do Xcode está sendo usada. A flag de build visionos_sdk_version vai substituir o valor especificado aqui.
default_watchos_sdk_version

String; não configurável; o padrão é ""

A versão do SDK watchos usada por padrão quando essa versão do Xcode está sendo usada. A flag de build watchos_sdk_version vai substituir o valor especificado aqui.
version

String; não configurável; obrigatório

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