Reglas de Objective-C

Informar un problema Ver el código fuente

Reglas

j2objc_library

Ver fuente de la regla
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

Esta regla usa J2ObjC para traducir archivos fuente Java a Objective-C, que luego puede usarse como dependencias de objc_library y objc_binary. Puedes obtener información detallada sobre J2ObjC en el sitio de J2ObjC.

Las marcas de transpilación J2ObjC personalizadas se pueden especificar con la marca de compilación --j2objc_translation_flags en la línea de comandos.

Ten en cuenta que los archivos traducidos incluidos en un destino j2objc_library se compilarán con la configuración de compilación predeterminada, que es la misma que para las fuentes de una regla objc_library sin opciones de compilación especificadas en atributos.

Además, se anula la duplicación de código generado en el nivel objetivo, no en el nivel de la fuente. Si tienes dos destinos Java diferentes que incluyen los mismos archivos fuente de Java, es posible que veas un error de símbolo duplicado en el momento del vínculo. La forma correcta de resolver este problema es mover los archivos de origen de Java compartidos a un destino común separado del que se pueda confiar.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

deps

List of labels; optional

Una lista de destinos j2objc_library, java_library, java_import y java_proto_library que contienen archivos Java que se transpilarán a Objective-C.

Se traducirán y compilarán todos los destinos java_library y java_import a los que se puede llegar de manera transitiva a través de exports, deps y runtime_deps, incluidos los archivos generados por el procesamiento de anotaciones de Java. No se admite para códigos>java_import sin srcjar especificado.

La traducción J2ObjC funciona de manera diferente según el tipo de archivos de origen de Java incluidos en el cierre transitivo. Para cada archivo fuente .java incluido en el archivo srcs de java_library, se generará un archivo fuente .h y .m correspondiente. Para cada jar de origen incluido en srcs de java_library o srcjar de java_import, se generará un archivo de origen .h y .m con todo el código de ese jar.

Los usuarios pueden importar a su código los archivos de encabezados generados por J2ObjC. Las rutas de importación para estos archivos son la ruta relativa a la raíz de los artefactos de Java originales. Por ejemplo, //some/package/foo.java tiene una ruta de importación de some/package/foo.h y //some/package/bar.srcjar tiene some/package/bar.h.

Si las reglas proto_library se encuentran en el cierre de transición de esta regla, los protos J2ObjC también se generarán, compilarán y vincularán en el nivel binario. Para el proto //some/proto/foo.proto, los usuarios pueden hacer referencia al código generado mediante la ruta de importación some/proto/foo.j2objc.pb.h.

entry_classes

List of strings; optional

La lista de clases de Java cuyos equivalentes de ObjC traducidos harán referencia directamente al código del objeto ObjC del usuario. Este atributo es obligatorio si la marca --j2objc_dead_code_removal está activada. Las clases Java se deben especificar en sus nombres canónicos según se define en la especificación del lenguaje Java. Cuando se especifica la marca --j2objc_dead_code_removal, la lista de clases de entrada se recopilará de forma transitiva y se usará como puntos de entrada para realizar un análisis de código muerto. Luego, se quitarán las clases que no se usen del paquete de aplicación final de ObjC.
jre_deps

List of labels; optional

La lista de bibliotecas de emulación de JRE adicionales requeridas por todo el código Java traducido por esta regla j2objc_library. Solo la funcionalidad principal de JRE está vinculada de forma predeterminada.

importación_obj

Ver fuente de la regla
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)

Esta regla encapsula una biblioteca estática ya compilada en forma de archivo .a. También permite exportar encabezados y recursos con los mismos atributos admitidos por objc_library.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

hdrs

List of labels; optional

La lista de archivos de encabezado C, C++, Objective-C y Objective-C++ publicados por esta biblioteca para que se incluyan en las fuentes dependientes.

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para su inclusión por fuentes en esta regla o en reglas dependientes. En el caso de los encabezados que no se pretenden incluir en un cliente de esta biblioteca, deben incluirse en el atributo srcs.

Estos se compilarán por separado de la fuente si los módulos están habilitados.

Boolean; optional; default is False

Si el valor es 1, cualquier paquete o objeto binario que dependa (directa o indirectamente) de esta biblioteca vinculará todos los archivos de objetos de los archivos que se indican en srcs y non_arc_srcs, incluso si algunos no contienen símbolos a los que el objeto binario haga referencia. Esto es útil si el código no llama explícitamente a tu código en el objeto binario; p.ej., si tu código se registra para recibir algún callback proporcionado por algún servicio.
archives

List of labels; required

La lista de archivos .a proporcionados a objetivos de Objective-C que dependen de este objetivo.
includes

List of strings; optional

Lista de #include/#import rutas de búsqueda para agregar a este destino, y a todas las que dependen de él. El objetivo de esto es admitir bibliotecas de terceros y de código abierto que no especifiquen toda la ruta del lugar de trabajo en sus declaraciones #import/#include.

Las rutas de acceso se interpretan en relación con el directorio del paquete, y los archivos genfile y raíz (p.ej., blaze-genfiles/pkg/includedir y blaze-out/pkg/includedir) se incluyen además de la raíz del cliente real.

A diferencia de COPTS, estas marcas se agregan para esta regla y todas las reglas que dependen de ella. Nota: No son las reglas de las que dependen. Ten mucho cuidado, ya que puede tener efectos de gran alcance. Cuando tengas dudas, agrega las marcas “-iquote” a COPTS en su lugar.

sdk_dylibs

List of strings; optional

Nombres de las bibliotecas .dylib del SDK con las que se vincularán. Por ejemplo, "libz" o "libarchive". "libc++" se incluye automáticamente si el objeto binario tiene fuentes C++ o Objective-C++ en su árbol de dependencias. Cuando se vincula un objeto binario, se usan todas las bibliotecas nombradas en el gráfico de dependencia transitivo de ese objeto binario.
sdk_frameworks

List of strings; optional

Nombres de frameworks de SDK para vincular (p.ej., "AddressBook", "QuartzCore"). "UIKit" y "Foundation" siempre se incluyen cuando se compila para las plataformas iOS, tvOS y watchOS. En macOS, solo se incluye "Base".

Cuando se vincula un objeto binario de nivel superior de Apple, se vinculan todos los marcos de trabajo del SDK enumerados en el gráfico de dependencia transitivo de ese objeto binario.

sdk_includes

List of strings; optional

Lista de rutas de búsqueda #include/#import para agregar a este destino, y a todas las orientaciones dependientes, donde cada ruta se relaciona con $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

La lista de archivos C, C++, Objective-C y Objective-C++ que se incluyen como encabezados en los archivos de origen de esta regla o de los usuarios de esta biblioteca. A diferencia de hdr, no se compilarán por separado de las fuentes.
weak_sdk_frameworks

List of strings; optional

Nombres de los frameworks del SDK con los que se vinculan de forma débil. Por ejemplo, "MediaAccessibility". A diferencia de los marcos de trabajo del SDK vinculados de forma periódica, los símbolos de marcos de trabajo vinculados débilmente no generan un error si no están presentes en el entorno de ejecución.

biblioteca_objc

Ver fuente de la regla
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)

Esta regla produce una biblioteca estática a partir de los archivos de origen de Objective-C especificados.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

deps

List of labels; optional

La lista de objetivos que están vinculados para formar el paquete final.
srcs

List of labels; optional

La lista de archivos fuente y de encabezado C, C++, Objective-C y Objective-C++, o los archivos de origen de ensamblaje (".s", ".S" o ".asm") que se procesan para crear el destino de la biblioteca. Estos son tus archivos registrados, además de los archivos generados. Los archivos de origen se compilan en archivos .o con Clang. Los archivos de encabezado pueden estar incluidos o importados por cualquier fuente o encabezado en el atributo srcs de este destino, pero no por los encabezados en hdr o cualquier destino que dependa de esta regla. Además, los archivos .o ya compilados pueden proporcionarse como srcs. Asegúrate de garantizar la coherencia en la arquitectura de los archivos .o proporcionados y de la compilación para evitar errores de vinculador de símbolos faltantes.
hdrs

List of labels; optional

La lista de archivos de encabezado C, C++, Objective-C y Objective-C++ publicados por esta biblioteca para que se incluyan en las fuentes dependientes.

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para su inclusión por fuentes en esta regla o en reglas dependientes. En el caso de los encabezados que no se pretenden incluir en un cliente de esta biblioteca, deben incluirse en el atributo srcs.

Estos se compilarán por separado de la fuente si los módulos están habilitados.

Boolean; optional; default is False

Si el valor es 1, cualquier paquete o objeto binario que dependa (directa o indirectamente) de esta biblioteca vinculará todos los archivos de objetos de los archivos que se indican en srcs y non_arc_srcs, incluso si algunos no contienen símbolos a los que el objeto binario haga referencia. Esto es útil si el código no llama explícitamente a tu código en el objeto binario; p.ej., si tu código se registra para recibir algún callback proporcionado por algún servicio.
copts

List of strings; optional

Indicadores adicionales que se pasan al compilador. Sujeto a la sustitución "Make variable" y la asignación de token de Shell Bourne. Estas marcas solo se aplicarán a este destino, no a las de las que depende ni a las dependientes.

Ten en cuenta que, para el proyecto de Xcode generado, se analizan las rutas de directorio que se especifican con las marcas “-I” en copias, y se les agrega “$(WORKSPACE_ROOT)/” si son rutas relativas y se agregan a las rutas de búsqueda de encabezado del destino de Xcode asociado.

defines

List of strings; optional

Marcas adicionales de -D para pasar al compilador. Tienen el formato KEY=VALUE o, simplemente, KEY, y se pasan no solo al compilador para este destino (como copts), sino también a todos los objc_este elemento. Sujeto a la sustitución "Make variable" y la asignación de token de Shell Bourne.
enable_modules

Boolean; optional; default is False

Habilita la compatibilidad con el módulo de Clang (a través de -fmodules). Establecer este valor en 1 te permitirá importar encabezados del sistema @import y otros destinos: @import UIKit; @import path_to_package_target;
includes

List of strings; optional

Lista de #include/#import rutas de búsqueda para agregar a este destino, y a todas las que dependen de él. El objetivo de esto es admitir bibliotecas de terceros y de código abierto que no especifiquen toda la ruta del lugar de trabajo en sus declaraciones #import/#include.

Las rutas de acceso se interpretan en relación con el directorio del paquete, y los archivos genfile y raíz (p.ej., blaze-genfiles/pkg/includedir y blaze-out/pkg/includedir) se incluyen además de la raíz del cliente real.

A diferencia de COPTS, estas marcas se agregan para esta regla y todas las reglas que dependen de ella. Nota: No son las reglas de las que dependen. Ten mucho cuidado, ya que puede tener efectos de gran alcance. Cuando tengas dudas, agrega las marcas “-iquote” a COPTS en su lugar.

linkopts

List of strings; optional

Indicadores adicionales para pasar al vinculador.
module_map

Label; optional

Un mapa personalizado del módulo Clang para este destino. No se recomienda el uso de un mapa de módulo personalizado. La mayoría de los usuarios deben usar mapas de módulo generados por Bazel. Si se especifica, Bazel no generará un mapa de módulo para este destino, pero pasará el mapa de módulo proporcionado al compilador.
module_name

String; optional

Establece el nombre del módulo para este destino. De forma predeterminada, el nombre del módulo es la ruta de destino con todos los símbolos especiales reemplazados por _, p.ej., //foo/baz:bar se puede importar como foo_baz_bar.
non_arc_srcs

List of labels; optional

La lista de archivos Objective-C que se procesan para crear el destino de la biblioteca que NO usa ARC Los archivos de este atributo se tratan de manera muy similar a los archivos que se incluyen en el atributo srcs, pero se compilan sin ARC habilitado.
pch

Label; optional

Archivo de encabezado para anteponer a cada archivo de origen que se compile (tanto en arco como en otro arco) No se recomienda el uso de archivos pch en los archivos BUILD, por lo que se debe considerar obsoleto. Dado que los archivos .pch no están precompilados, esto no es una mejora de la velocidad de compilación y, en su lugar, es solo una dependencia global. Desde el punto de vista de la eficiencia de compilación, es mejor que incluyas lo que necesitas directamente en las fuentes donde lo necesites.
sdk_dylibs

List of strings; optional

Nombres de las bibliotecas .dylib del SDK con las que se vincularán. Por ejemplo, "libz" o "libarchive". "libc++" se incluye automáticamente si el objeto binario tiene fuentes C++ o Objective-C++ en su árbol de dependencias. Cuando se vincula un objeto binario, se usan todas las bibliotecas nombradas en el gráfico de dependencia transitivo de ese objeto binario.
sdk_frameworks

List of strings; optional

Nombres de frameworks de SDK para vincular (p.ej., "AddressBook", "QuartzCore"). "UIKit" y "Foundation" siempre se incluyen cuando se compila para las plataformas iOS, tvOS y watchOS. En macOS, solo se incluye "Base".

Cuando se vincula un objeto binario de nivel superior de Apple, se vinculan todos los marcos de trabajo del SDK enumerados en el gráfico de dependencia transitivo de ese objeto binario.

sdk_includes

List of strings; optional

Lista de rutas de búsqueda #include/#import para agregar a este destino, y a todas las orientaciones dependientes, donde cada ruta se relaciona con $(SDKROOT)/usr/include.
textual_hdrs

List of labels; optional

La lista de archivos C, C++, Objective-C y Objective-C++ que se incluyen como encabezados en los archivos de origen de esta regla o de los usuarios de esta biblioteca. A diferencia de hdr, no se compilarán por separado de las fuentes.
weak_sdk_frameworks

List of strings; optional

Nombres de los frameworks del SDK con los que se vinculan de forma débil. Por ejemplo, "MediaAccessibility". A diferencia de los marcos de trabajo del SDK vinculados de forma periódica, los símbolos de marcos de trabajo vinculados débilmente no generan un error si no están presentes en el entorno de ejecución.

códigos_disponibles

Ver fuente de la regla
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

Dos instancias de esta regla pueden depender de una instancia de regla xcode_config para indicar las versiones de Xcode disponibles de forma remota y local. Esto permite seleccionar una versión oficial de los códigos Xcode disponibles de forma colectiva.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

default

Label; required; nonconfigurable

La versión predeterminada de Xcode para esta plataforma.
versions

List of labels; optional; nonconfigurable

Son las versiones de Xcode que están disponibles en esta plataforma.

configuración de xcode

Ver fuente de la regla
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

Se puede hacer referencia a un único destino de esta regla mediante la marca de compilación --xcode_version_config para traducir la marca --xcode_version a una versión de xcode oficial aceptada. Esto permite seleccionar una versión oficial de Xcode de varios alias registrados.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

default

Label; optional; nonconfigurable

La versión oficial predeterminada de Xcode que se usará. Se usará la versión especificada por el destino xcode_version proporcionado si no se especifica una marca de compilación xcode_version. Esto es obligatorio si se configura cualquier versions. Esto no se puede establecer si se configura remote_versions o local_versions.
local_versions

Label; optional; nonconfigurable

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

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

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. aceptado(s)

versión_xcode

Ver fuente de la regla
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 una única versión oficial de Xcode con alias aceptables para esa versión. Consulta la regla xcode_config.

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

default_ios_sdk_version

String; optional; nonconfigurable

Es la versión del SDK de iOS que se usa de forma predeterminada cuando se usa esta versión de Xcode. La marca de compilación ios_sdk_version anulará el valor especificado aquí.
default_macos_sdk_version

String; optional; nonconfigurable

La versión del macosx sdk que se usa de forma predeterminada cuando se usa esta versión de Xcode. La marca de compilación macos_sdk_version anulará el valor especificado aquí.
default_tvos_sdk_version

String; optional; nonconfigurable

La versión del SDK de tvos que se usa de forma predeterminada cuando se usa esta versión de Xcode. La marca de compilación tvos_sdk_version anulará el valor especificado aquí.
default_watchos_sdk_version

String; optional; nonconfigurable

Es la versión del SDK de watchos que se usa de forma predeterminada cuando se usa esta versión de Xcode. La marca de compilación watchos_sdk_version anulará el valor especificado aquí.
version

String; required; nonconfigurable

El número de versión oficial de una versión de Xcode