Regras do Objective-C

Reportar um problema Ver a fonte Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Regras

j2objc_library

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 o J2ObjC para traduzir arquivos de origem Java para Objective-C, que podem ser usados como dependências das regras objc_library e objc_binary. Informações detalhadas sobre o J2ObjC podem ser encontradas no site do J2ObjC.

É possível especificar flags de transcompilação J2ObjC personalizadas 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 fontes de uma regra objc_library sem opções de compilação especificadas em atributos.

Além disso, o código gerado é desduplicado no nível de destino, não no nível de origem. Se você tiver dois destinos Java diferentes que incluem os mesmos arquivos de origem Java, poderá ocorrer um erro de símbolo duplicado durante a vinculação. A maneira correta de resolver esse problema é mover os arquivos de origem Java compartilhados para um destino comum separado que possa ser usado como dependência.

Argumentos

Atributos
name

Nome: obrigatório

Um nome exclusivo para essa segmentação.

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 transpilados para Objective-C.

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

A tradução do 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 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 pelo 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 dessa regra, os protos J2ObjC também serão gerados, compilados e vinculados no nível binário. Para proto //some/proto/foo.proto, os usuários podem consultar 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ão referenciadas diretamente pelo código ObjC do usuário. Esse atributo é obrigatório se a flag --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 flag --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ódigo morto. As classes não usadas serão removidas do pacote final do app ObjC.
jre_deps

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

A lista de bibliotecas de emulação do JRE adicionais 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

Ver 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)

Essa regra encapsula uma biblioteca estática já compilada na forma de um arquivo .a. Também é possível exportar cabeçalhos e recursos usando os mesmos atributos compatíveis com objc_library.

Argumentos

Atributos
name

Nome: obrigatório

Um nome exclusivo para essa segmentação.

deps

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

A lista de destinos de que este destino depende.
hdrs

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

A lista de arquivos de cabeçalho C, C++, Objective-C e Objective-C++ publicados por esta biblioteca para serem incluídos por fontes em regras dependentes.

Esses cabeçalhos descrevem a interface pública da biblioteca e 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 "srcs".

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

Booleano; o padrão é False

Se for 1, qualquer pacote ou binário que dependa (direta ou indiretamente) dessa biblioteca vai vincular 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 o código se registrar para receber um callback fornecido por algum serviço.
archives

Lista de marcadores; 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 #include/#import a serem adicionados a essa segmentação e a todas as segmentações dependentes. Isso é 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 do cliente real.

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

sdk_dylibs

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

Nomes das bibliotecas .dylib do SDK a serem vinculadas. Por exemplo, "libz" ou "libarchive". A "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ência transitiva desse binário são usadas.
sdk_frameworks

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

Nomes de frameworks de SDK para vincular (por exemplo, "AddressBook", "QuartzCore"). "UIKit" e "Foundation" sempre são incluídos ao criar para as plataformas iOS, tvOS, visionOS e watchOS. No macOS, apenas "Foundation" é sempre incluído.

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

sdk_includes

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

Lista de caminhos de pesquisa #include/#import a serem adicionados a essa meta e a todas as metas 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 por arquivos de origem nesta regra ou por usuários desta biblioteca. Ao contrário dos hdrs, eles não serão compilados separadamente das fontes.
weak_sdk_frameworks

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

Nomes de frameworks do SDK para vinculação fraca. Por exemplo, "MediaAccessibility". Ao contrário dos frameworks de SDK vinculados regularmente, os símbolos de frameworks vinculados de forma fraca não causam um erro se não estiverem presentes durante a execução.

objc_library

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, 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 dos arquivos de origem Objective-C especificados.

Argumentos

Atributos
name

Nome: obrigatório

Um nome exclusivo para essa segmentação.

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 de cabeçalho C, C++, Objective-C e Objective-C++, e/ou arquivos de origem de assembly (`.s`, `.S` ou `.asm`) que são processados para criar o destino da biblioteca. São seus arquivos check-in e todos os arquivos gerados. Os arquivos de origem são compilados em arquivos .o com o Clang. Os arquivos de cabeçalho podem ser incluídos/importados por qualquer origem ou cabeçalho no atributo srcs deste destino, mas não por cabeçalhos em hdrs ou destinos que dependam desta regra. Além disso, 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 vinculador de símbolos ausentes.
hdrs

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

A lista de arquivos de cabeçalho C, C++, Objective-C e Objective-C++ publicados por esta biblioteca para serem incluídos por fontes em regras dependentes.

Esses cabeçalhos descrevem a interface pública da biblioteca e 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 "srcs".

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

Booleano; o padrão é False

Se for 1, qualquer pacote ou binário que dependa (direta ou indiretamente) dessa biblioteca vai vincular 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 o código se registrar para receber um callback fornecido por algum serviço.
copts

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

Flags extras a serem transmitidas ao compilador. Sujeito à substituição de "Criar variável" e tokenização do shell Bourne. Essas flags só se aplicam a essa meta, não às que ela depende ou às que dependem dela.

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

defines

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

Flags -D extras a serem transmitidas ao compilador. Eles precisam estar no formato KEY=VALUE ou simplesmente KEY e são transmitidos não apenas ao compilador desse destino (como copts), mas também a todos os dependentes objc_ desse destino. Sujeito à substituição de "Criar variável" e tokenização do shell Bourne.
enable_modules

Booleano; o padrão é False

Ativa o suporte ao módulo clang (usando -fmodules). Definir como 1 permite @importar 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 do 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 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 #include/#import a serem adicionados a essa segmentação e a todas as segmentações dependentes. Isso é 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 do cliente real.

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

linkopts

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

Flags extras a serem transmitidas ao vinculador.
module_map

Rótulo; o padrão é None

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

String; o padrão é ""

Define o nome do módulo para essa meta. 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 processados para criar o destino da biblioteca que NÃO usa ARC. Os arquivos nesse atributo são tratados de maneira muito semelhante aos do atributo srcs, mas são compilados sem o ARC ativado.
pch

Rótulo; o padrão é None

Arquivo de cabeçalho a ser adicionado a cada arquivo de origem compilado (arc e não arc). O uso de arquivos pch é desencorajado ativamente nos arquivos BUILD e deve ser considerado descontinuado. Como os arquivos pch não são pré-compilados, isso não é uma melhoria na velocidade de build, mas apenas uma dependência global. Do ponto de vista da eficiência do build, é melhor incluir o que você precisa diretamente nas fontes onde é necessário.
sdk_dylibs

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

Nomes das bibliotecas .dylib do SDK a serem vinculadas. Por exemplo, "libz" ou "libarchive". A "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ência transitiva desse binário são usadas.
sdk_frameworks

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

Nomes de frameworks de SDK para vincular (por exemplo, "AddressBook", "QuartzCore"). "UIKit" e "Foundation" sempre são incluídos ao criar para as plataformas iOS, tvOS, visionOS e watchOS. No macOS, apenas "Foundation" é sempre incluído.

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

sdk_includes

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

Lista de caminhos de pesquisa #include/#import a serem adicionados a essa meta e a todas as metas 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 por arquivos de origem nesta regra ou por usuários desta biblioteca. Ao contrário dos hdrs, eles não serão compilados separadamente das fontes.
weak_sdk_frameworks

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

Nomes de frameworks do SDK para vinculação fraca. Por exemplo, "MediaAccessibility". Ao contrário dos frameworks de SDK vinculados regularmente, os símbolos de frameworks vinculados de forma fraca não causam um erro se não estiverem presentes durante a execução.

available_xcodes

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

Duas metas dessa regra podem ser usadas por uma instância de regra xcode_config para indicar as versões do Xcode disponíveis remotamente e localmente. Isso permite a seleção de uma versão oficial do Xcode entre as disponíveis.

Argumentos

Atributos
name

Nome: obrigatório

Um nome exclusivo para essa segmentação.

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áveis. O padrão é [].

As versões do Xcode disponíveis nessa 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 flag 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 em vários aliases registrados.

Argumentos

Atributos
name

Nome: obrigatório

Um nome exclusivo para essa segmentação.

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 pela meta xcode_version fornecida será usada se nenhuma flag de build xcode_version for especificada. Obrigatório se algum versions estiver definido. Não pode 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 disponíveis localmente. Eles são usados com local_versions para selecionar uma versão disponível para ambos. Não pode ser definido se versions estiver definido.
remote_versions

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

Os destinos xcode_version disponíveis remotamente. Eles são usados com remote_versions para selecionar uma versão disponível para ambos. Não pode ser definido se versions estiver definido.
versions

Lista de marcadores não configuráveis. O padrão é [].

Destinos xcode_version aceitos que podem ser usados. Se o valor da flag de build xcode_version corresponder a um dos aliases ou ao número da versão de qualquer um dos destinos xcode_version especificados, o destino correspondente será usado. Não pode ser definido se remote_versions ou local_versions estiver definido.

xcode_version

Ver 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 essa segmentação.

default_ios_sdk_version

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

A versão do SDK do iOS usada por padrão quando esta 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 esta 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 do tvOS usada por padrão quando esta versão do Xcode está sendo usada. 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 esta 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 do watchOS usada por padrão quando esta 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.