Regras do Objective-C

Report an issue View source Nightly · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Regras

objc_import

Conferir origem da regra
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, includes, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

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

Argumentos

Atributos
name

Nome; obrigatório

Um nome exclusivo para essa segmentação.

deps

Lista de rótulos; o padrão é []

Lista de destinos de que esse 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 sejam 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 dependente regras de firewall. Os cabeçalhos que não precisam 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 1, qualquer pacote ou binário que dependa (diretamente 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 seu código não for chamado explicitamente por código em o binário, por exemplo, caso seu código seja registrado para receber algum callback por algum serviço.
archives

Lista de rótulos; obrigatório

A lista de arquivos .a fornecidos para alvos Objective-C que dependerão dessa meta.
includes

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

Lista de #include/#import caminhos de pesquisa para adicionar a este destino e todas as metas dependentes. Isso serve para dar suporte a bibliotecas de terceiros e de código aberto que não especificar todo o caminho do espaço de trabalho instruções #import/#include.

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

Ao contrário de COPTS, essas flags 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, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione "-iquote" para COPTS.

sdk_dylibs

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

Nomes das bibliotecas .dylib do SDK a serem vinculadas. Por exemplo, "libz" ou "libarchive". "libc++" é incluído 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ências transitivas desse binário usados.
sdk_frameworks

Lista de strings o padrão é []

Nomes de estruturas do SDK a serem vinculadas (por exemplo, "AddressBook", "QuartzCore").

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

sdk_includes

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

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

Lista de rótulos; o padrão é []

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

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

Nomes de frameworks de SDK para vincular de forma fraca. Por exemplo, "MediaAccessibility". Diferentemente dos frameworks de SDK vinculados regularmente, os símbolos de frameworks vinculados fracamente não causam um erro se não estiverem presentes no momento da execução.

objc_library

Conferir 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, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, 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 essa segmentação.

deps

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

A lista de destinos de que o destino depende.
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. Estes são os arquivos que você fez o check-in, além dos 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 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 na arquitetura dos arquivos .o fornecidos e do build para evitar erros de linker de símbolo 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 sejam 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 dependente regras de firewall. Os cabeçalhos que não precisam 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 1, qualquer pacote ou binário que dependa (diretamente 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 em o binário, por exemplo, caso seu código seja registrado para receber algum callback por algum serviço.
copts

Lista de strings o padrão é []

Sinalizações extras a serem passadas para o compilador. Sujeita à substituição "Make variables" e Tokenização de Bourne Shell. Essas flags só se aplicam a esse destino, e não aos que dependem dele ou que dependem dele.

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

defines

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

Sinalizações -D extras a serem transmitidas ao compilador. Elas devem estar na forma KEY=VALUE ou simplesmente KEY e são transmitido não apenas para o compilador desse destino (como copts são), mas também para todos os objc_ dependentes desse destino. Sujeito à substituição de "Make variable" e tokenização de shell Bourne.
enable_modules

Booleano; o padrão é False

Ativa o suporte a módulos clang (via -fmodules). A definição como 1 permitirá que você use @import em cabeçalhos de 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 todos os deps transitivos) são usados apenas para a compilação dessa biblioteca, e não para as bibliotecas que dependem dela. As bibliotecas especificadas com implementation_deps ainda estão vinculadas em destinos binários que dependem dessa biblioteca.
includes

Lista de strings o padrão é []

Lista de #include/#import caminhos de pesquisa para adicionar a este destino e todas as metas dependentes. Isso serve para dar suporte a bibliotecas de terceiros e de código aberto que não especificar todo o caminho do espaço de trabalho instruções #import/#include.

Os caminhos são interpretados em relação ao diretório do pacote, e os genfiles e raízes de 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 flags 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, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione flags "-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.

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 mapas de módulo gerados pelo Bazel. Se especificado, o Bazel não gera um mapa de módulo para esse destino, mas passa o mapa do 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 processados para criar a destino de biblioteca que NÃO usam ARC. Os arquivos desse atributo são tratados de forma muito semelhante aos arquivos srcs, mas são compilados sem o ARC ativado.
pch

Rótulo: o padrão é None.

Arquivo de cabeçalho para ser adicionado a todos os arquivos de origem que estão sendo compilados (arc e não arc). O uso de arquivos pch é ativamente desencorajado em arquivos BUILD, e isso deve ser considerada obsoleta. Como os arquivos pch não são pré-compilados, isso não é um aprimoramento da velocidade de build, sendo apenas uma dependência global. Do ponto de vista da eficiência de build, é melhor incluir o que você precisa diretamente nas suas fontes.
sdk_dylibs

Lista de strings o padrão é []

Nomes das bibliotecas .dylib do SDK a serem vinculadas. Por exemplo, "libz" ou "libarchive". "libc++" é incluído 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ências transitivas desse binário usados.
sdk_frameworks

Lista de strings o padrão é []

Nomes de estruturas do SDK a serem vinculadas (por exemplo, "AddressBook", "QuartzCore").

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

sdk_includes

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

Lista de #include/#import caminhos de pesquisa para adicionar a este destino e todos os destinos dependentes, em que cada caminho é relativo ao $(SDKROOT)/usr/include.
stamp

Booleano; o padrão é False

textual_hdrs

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

A lista de arquivos C, C++, Objective-C e Objective-C++ que são incluídos como cabeçalhos por arquivos de origem nesta regra ou por usuários desta biblioteca. Ao contrário dos hdrs, estes não serão compilados separadamente do de dados.
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 de SDK vinculados regularmente, os símbolos de frameworks vinculados fracamente não causam um erro se não estiverem presentes no momento da execução.