Regras
j2objc_library
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 de regras objc_library e objc_binary. Informações detalhadas sobre o J2ObjC podem ser encontradas no site do J2ObjC (link em inglês).
As flags de transcompilação J2ObjC personalizadas 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 vão ser 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, poderá encontrar 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 possa ser dependente.
Argumentos
Atributos | |
---|---|
name |
Um nome exclusivo para o destino. |
deps
|
j2objc_library , java_library ,
java_import e java_proto_library que contêm
arquivos Java a serem transcompilados para Objective-C.
Todos os destinos A conversão J2ObjC funciona de maneira diferente dependendo do tipo de arquivos de origem Java de origem incluídos no fechamento transitivo. Para cada arquivo de origem .java incluído em
Os usuários podem importar os arquivos principais 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,
Se as regras proto_library estiverem no fechamento transitivo desta regra, os protos J2ObjC também
serão gerados, compilados e vinculados no nível binário. Para o proto
|
entry_classes
|
--j2objc_dead_code_removal
estiver ativada. As classes Java precisam ser especificadas nos respectivos nomes canônicos, conforme definido pela especificação da linguagem Java (link em inglês).
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ódigo inativo.
As classes não utilizadas vão ser removidas do pacote de apps ObjC final.
|
jre_deps
|
j2objc_library . Apenas a funcionalidade principal do JRE é vinculada por padrão.
|
objc_import
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 compatíveis com objc_library
.
Argumentos
Atributos | |
---|---|
name |
Um nome exclusivo para o destino. |
hdrs
|
Esses cabeçalhos descrevem a interface pública da biblioteca e serão disponibilizados para inclusão pelas fontes nesta regra ou em regras dependentes. Os cabeçalhos que não podem ser incluídos por um cliente dessa biblioteca precisam ser listados no atributo srcs. Eles vão ser compilados separadamente da origem se os módulos estiverem ativados. |
alwayslink
|
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 é chamado explicitamente pelo código no
binário, por exemplo, se ele é registrado para receber algum callback
fornecido por algum serviço.
|
archives
|
.a fornecidos para destinos Objective-C que dependem desse destino.
|
includes
|
#include/#import a serem adicionados a esse destino
e a todos os destinos dependentes.
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
os genfiles e raízes bin (por exemplo, Ao contrário de COTS, essas sinalizações são adicionadas para essa regra e todas as regras que dependem dela. Observação: não são as regras das quais ela depende. Tenha muito cuidado, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione sinalizações "-iquote" a COPTS. |
sdk_dylibs
|
|
sdk_frameworks
|
Ao vincular um binário da Apple de nível superior, todos os frameworks do SDK listados no gráfico de dependência transitiva desse binário são vinculados. |
sdk_includes
|
#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
|
|
weak_sdk_frameworks
|
|
objc_library
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, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)
Esta regra produz uma biblioteca estática com base nos arquivos de origem Objective-C fornecidos.
Argumentos
Atributos | |
---|---|
name |
Um nome exclusivo para o destino. |
deps
|
|
srcs
|
|
hdrs
|
Esses cabeçalhos descrevem a interface pública da biblioteca e serão disponibilizados para inclusão pelas fontes nesta regra ou em regras dependentes. Os cabeçalhos que não podem ser incluídos por um cliente dessa biblioteca precisam ser listados no atributo srcs. Eles vão ser compilados separadamente da origem se os módulos estiverem ativados. |
alwayslink
|
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 é chamado explicitamente pelo código no
binário, por exemplo, se ele é registrado para receber algum callback
fornecido por algum serviço.
|
copts
|
Observe que, para o projeto Xcode gerado, os caminhos de diretório especificados usando sinalizações "-I" em copts são analisados, precedidos com "$(WORKSPACE_ROOT)/" se forem caminhos relativos e adicionados aos caminhos de pesquisa de cabeçalho para o destino do Xcode associado. |
defines
|
-D extras a serem transmitidas para o compilador. Eles precisam estar no formato KEY=VALUE ou simplesmente KEY e são transmitidos não apenas para o compilador para esse destino (como copts ), mas também para todos os objc_ dependem desse destino.
Sujeito à substituição "Make variables" e
tokenização do shell Bourne.
|
enable_modules
|
|
implementation_deps
|
deps , os cabeçalhos e os caminhos dessas bibliotecas (e todas as
dependências transitivas) são usados apenas para a compilação dessa biblioteca, e não das bibliotecas
que dependem dela. As bibliotecas especificadas com implementation_deps ainda estão vinculadas em destinos binários que dependem dessa biblioteca.
|
includes
|
#include/#import a serem adicionados a esse destino
e a todos os destinos dependentes.
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
os genfiles e raízes bin (por exemplo, Ao contrário de COTS, essas sinalizações são adicionadas para essa regra e todas as regras que dependem dela. Observação: não são as regras das quais ela depende. Tenha muito cuidado, porque isso pode ter efeitos de longo alcance. Em caso de dúvida, adicione sinalizações "-iquote" a COPTS. |
linkopts
|
|
module_map
|
|
module_name
|
|
non_arc_srcs
|
|
pch
|
|
runtime_deps
|
|
sdk_dylibs
|
|
sdk_frameworks
|
Ao vincular um binário da Apple de nível superior, todos os frameworks do SDK listados no gráfico de dependência transitiva desse binário são vinculados. |
sdk_includes
|
#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
|
|
weak_sdk_frameworks
|
|
available_xcodes
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
Dois destinos dessa regra podem ser dependentes 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 xcodes coletivamente disponíveis.
Argumentos
Atributos | |
---|---|
name |
Um nome exclusivo para o destino. |
default
|
|
versions
|
|
xcode_config
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 converter a sinalização --xcode_version
em uma versão oficial aceita do Xcode.
Isso permite a seleção de uma versão oficial do xcode entre vários aliases registrados.
Argumentos
Atributos | |
---|---|
name |
Um nome exclusivo para o destino. |
default
|
xcode_version fornecido vai ser usada se
nenhuma flag de build xcode_version for especificada. Isso será necessário se algum
versions estiver definido. Isso não pode ser definido se remote_versions ou
local_versions estiverem definidos.
|
local_versions
|
xcode_version |
remote_versions
|
xcode_version |
versions
|
xcode_version |
xcode_version
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.
Consulte a regra xcode_config
.
Argumentos
Atributos | |
---|---|
name |
Um nome exclusivo para o destino. |
default_ios_sdk_version
|
ios_sdk_version vai substituir o valor especificado aqui.
|
default_macos_sdk_version
|
macos_sdk_version vai substituir o valor especificado aqui.
|
default_tvos_sdk_version
|
tvos_sdk_version vai substituir o valor especificado aqui.
|
default_visionos_sdk_version
|
visionos_sdk_version vai substituir o valor especificado aqui.
|
default_watchos_sdk_version
|
watchos_sdk_version vai substituir o valor especificado aqui.
|
version
|
|