Reglas de Objective-C

Reglas

j2objc_library

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 el código fuente de Java en Objective-C, que luego se pueden usar como dependencias de objc_library y objc_binary las reglas de firewall. Puedes encontrar información detallada acerca de J2ObjC en la 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 el destino j2objc_library se compilar usando la configuración de compilación predeterminada, que es la misma que la de las fuentes Una regla objc_library sin opciones de compilación especificadas en los atributos.

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

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

deps

List of labels; optional

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

Todos los objetivos de java_library y java_import que se pueden alcanzar de forma transitiva a través de exports, deps y runtime_deps se traducirán y compilarán. Por el momento, no se admiten archivos generados por Java procesamiento de anotaciones o destinos de java_import sin srcjar especificada.

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

Los usuarios pueden importar los archivos de encabezado generados por J2ObjC en su código. Las rutas de importación de Estos archivos son la ruta de acceso relativa de raíz de los artefactos originales de Java. Por ejemplo: La ruta de importación de //some/package/foo.java es some/package/foo.h y //some/package/bar.srcjar tiene some/package/bar.h

Si las reglas proto_library están en el cierre transitivo de esta regla, los proto J2ObjC también generarse, compilarse y vincularse a nivel binario. Para proto //some/proto/foo.proto, los usuarios pueden hacer referencia al código generado con la función de importación some/proto/foo.j2objc.pb.h de la ruta de acceso.

entry_classes

List of strings; optional

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

List of labels; optional

Lista de bibliotecas de emulación de JRE adicionales que requiere todo el código Java traducido por este Regla j2objc_library. Solo la funcionalidad principal de JRE está vinculada de forma predeterminada.

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)

Esta regla encapsula una biblioteca estática ya compilada en forma de un .a. También permite exportar encabezados y recursos usando la misma atributos admitidos por objc_library.

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

hdrs

List of labels; optional

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

Estos encabezados describen la interfaz pública para la biblioteca y serán se pusieron a disposición de las fuentes en esta regla o en fuentes las reglas de firewall. Encabezados que no deben ser incluidos por un cliente de esta biblioteca se debe indicar en el atributo srcs en su lugar.

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

Boolean; optional; default is False

Si es 1, es cualquier paquete o objeto binario que depende (directa o indirectamente) de este biblioteca vinculará todos los archivos de objeto de los archivos enumerados en srcs y non_arc_srcs, incluso si algunos no contienen a los que hace referencia el objeto binario. Esto es útil si no se llama explícitamente a tu código en el objeto binario, p.ej., si tu código se registra para recibir alguna devolución de llamada proporcionados por algún servicio.
archives

List of labels; required

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

List of strings; optional

Lista de #include/#import rutas de búsqueda para agregar a este destino y todos los objetivos dependientes. Esto es para admitir bibliotecas de terceros y de código abierto que no especificar la ruta del lugar de trabajo completa en la Declaraciones #import/#include.

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

A diferencia de COPTS, estas marcas se agregan a esta regla. y cada regla que depende de él. (Nota: No depende de las reglas de las que depende). Sé esto puede tener efectos de largo alcance. Si tienes dudas, agrega “-iquote” a COPTS.

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 valores de C++ o Fuentes de Objective-C++ en su árbol de dependencias. Cuando vinculas un objeto binario, todas las bibliotecas nombradas en el gráfico de dependencia transitiva del objeto binario que se usan.
sdk_frameworks

List of strings; optional

Nombres de los frameworks del SDK con los que se vinculará (p.ej., "AddressBook" o "QuartzCore"). “UIKit” y “Base” siempre se incluyen cuando compilas para iOS, tvOS, VisionOS, y watchOS. Para macOS, solo “Foundation” siempre está incluida.

Cuando se vincula un objeto binario de Apple de nivel superior, se enumeran todos los frameworks del SDK que se incluyen en el objeto binario de ese objeto el gráfico de dependencias transitivos están vinculados.

sdk_includes

List of strings; optional

Lista de #include/#import rutas de búsqueda para agregar a este destino y todos los destinos dependientes, en los que cada ruta es relativa $(SDKROOT)/usr/include
textual_hdrs

List of labels; optional

La lista de archivos C, C++, Objective-C y Objective-C++ que se incluidos como encabezados por los archivos fuente en esta regla o por sus usuarios biblioteca. A diferencia de los HDR, estos no se compilarán por separado del fuentes de datos.
weak_sdk_frameworks

List of strings; optional

Nombres de frameworks del SDK con los que se vinculará de manera débil. Por ejemplo: "MediaAccessibility". A diferencia de los frameworks de SDK vinculados habitualmente, los símbolos de frameworks con vínculos débiles no generan un error si no están presentes en el tiempo de ejecución.

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 regla produce una biblioteca estática a partir de los archivos fuente de Objective-C proporcionados.

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

deps

List of labels; optional

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

List of labels; optional

La lista de fuentes y encabezados de C, C++, Objective-C y Objective-C++ o archivos de origen de ensamblado (`.s`, `.S` o `.asm`), que se procesan para crear el destino de la biblioteca. Estos son los archivos registrados, más los archivos generados. Los archivos fuente se compilan en archivos .o con Clang. Archivos de encabezado cualquier fuente o encabezado del atributo srcs puede incluir o importar de este destino, pero no por los encabezados en hdrs ni por los destinos que dependan de esta regla. Además, los archivos .o precompilados se pueden proporcionar como srcs. Ten cuidado de garantizar la coherencia en la arquitectura de los archivos .o proporcionados y en la de la para evitar errores del vinculador de símbolos.
hdrs

List of labels; optional

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

Estos encabezados describen la interfaz pública para la biblioteca y serán se pusieron a disposición de las fuentes en esta regla o en fuentes las reglas de firewall. Encabezados que no deben ser incluidos por un cliente de esta biblioteca se debe indicar en el atributo srcs en su lugar.

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

Boolean; optional; default is False

Si es 1, es cualquier paquete o objeto binario que depende (directa o indirectamente) de este biblioteca vinculará todos los archivos de objeto de los archivos enumerados en srcs y non_arc_srcs, incluso si algunos no contienen a los que hace referencia el objeto binario. Esto es útil si no se llama explícitamente a tu código en el objeto binario, p.ej., si tu código se registra para recibir alguna devolución de llamada proporcionados por algún servicio.
copts

List of strings; optional

Marcas adicionales para pasar al compilador. Con la sustitución "Make variable" y Asignación de token de shell de Bourne. Estas marcas solo se aplicarán a este destino, y no a aquellas en las que depende o depende de él.

Ten en cuenta que, en el proyecto de Xcode generado, las rutas de acceso a directorios especificadas con “-I” marcas en Los archivos copts se analizan y se anteponen con "$(WORKSPACE_ROOT)/" si son rutas relativas a las rutas de búsqueda de encabezados para el destino de Xcode asociado.

defines

List of strings; optional

Marcas -D adicionales para pasar al compilador. Deben estar en el formulario KEY=VALUE o simplemente KEY, y son se pasa no solo al compilador para este destino (como copts sí), sino también a todos los objc_ dependientes de este objetivo. Con la sustitución "Make variable" y Asignación de token de shell de Bourne.
enable_modules

Boolean; optional; default is False

Habilita la compatibilidad con el módulo Clang (a través de -fmodules). Si lo estableces en 1, podrás usar @import para los encabezados del sistema y otros objetivos: @import UIKit; @import path_to_package_target;
implementation_deps

List of labels; optional

Es la lista de otras bibliotecas de las que depende la biblioteca objetivo. Desmarcar Me gusta con deps, los encabezados y las rutas de acceso de inclusión de estas bibliotecas (y todas sus dependencias transitivas) solo se usan para compilar esta biblioteca, no las bibliotecas que dependen de él. Las bibliotecas especificadas con implementation_deps siguen vinculadas en objetivos binarios que dependen de esta biblioteca.
includes

List of strings; optional

Lista de #include/#import rutas de búsqueda para agregar a este destino y todos los objetivos dependientes. Esto es para admitir bibliotecas de terceros y de código abierto que no especificar la ruta del lugar de trabajo completa en la Declaraciones #import/#include.

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

A diferencia de COPTS, estas marcas se agregan a esta regla. y cada regla que depende de él. (Nota: No depende de las reglas de las que depende). Sé esto puede tener efectos de largo alcance. Si tienes dudas, agrega “-iquote” a COPTS.

linkopts

List of strings; optional

Marcas adicionales para pasar al vinculador.
module_map

Label; optional

Un mapa de módulos Clang personalizado para este destino. No se recomienda el uso de un mapa de módulos personalizado. Más probable los usuarios deben usar mapas de módulos generados por Bazel. Si se especifica, Bazel no generará un mapa de módulos para este destino, pero pasará el de módulos proporcionados 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 de Objective-C que se procesan para crear la objetivo de la biblioteca que NO usan ARC. Los archivos de este atributo se tratan de manera muy similar a los de la srcs, pero se compilan sin ARC habilitado.
pch

Label; optional

Archivo de encabezado que se antepondrá a cada archivo de origen que se compile (tanto y sin arco). No se recomienda activamente el uso de archivos pch en los archivos BUILD, y esto debería ser así. que se considera obsoleto. Como los archivos pch no están precompilados, esto no es una mejora en la velocidad de compilación que, en cambio, es solo una dependencia global. De una compilación punto de vista de la eficiencia significa que, en realidad, se incluye mejor lo que necesita directamente de tus fuentes cuando lo necesites.
runtime_deps

List of labels; optional

La lista de objetivos del framework que se cargan con retraso en el entorno de ejecución. Se incluyen en el paquete de aplicación, pero sin vincular en el tiempo de compilación.
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 valores de C++ o Fuentes de Objective-C++ en su árbol de dependencias. Cuando vinculas un objeto binario, todas las bibliotecas nombradas en el gráfico de dependencia transitiva del objeto binario que se usan.
sdk_frameworks

List of strings; optional

Nombres de los frameworks del SDK con los que se vinculará (p.ej., "AddressBook" o "QuartzCore"). “UIKit” y “Base” siempre se incluyen cuando compilas para iOS, tvOS, VisionOS, y watchOS. Para macOS, solo “Foundation” siempre está incluida.

Cuando se vincula un objeto binario de Apple de nivel superior, se enumeran todos los frameworks del SDK que se incluyen en el objeto binario de ese objeto el gráfico de dependencias transitivos están vinculados.

sdk_includes

List of strings; optional

Lista de #include/#import rutas de búsqueda para agregar a este destino y todos los destinos dependientes, en los que cada ruta es relativa $(SDKROOT)/usr/include
textual_hdrs

List of labels; optional

La lista de archivos C, C++, Objective-C y Objective-C++ que se incluidos como encabezados por los archivos fuente en esta regla o por sus usuarios biblioteca. A diferencia de los HDR, estos no se compilarán por separado del fuentes de datos.
weak_sdk_frameworks

List of strings; optional

Nombres de frameworks del SDK con los que se vinculará de manera débil. Por ejemplo: "MediaAccessibility". A diferencia de los frameworks de SDK vinculados habitualmente, los símbolos de frameworks con vínculos débiles no generan un error si no están presentes en el tiempo de ejecución.

available_xcodes

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

Una instancia de regla xcode_config puede depender de dos destinos de esta regla para indicar las versiones de Xcode disponibles de forma remota y local. Esto permite seleccionar una versión oficial de uno de los códigos disponibles colectivamente.

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

default

Label; required; nonconfigurable

Es la versión de Xcode predeterminada para esta plataforma.
versions

List of labels; optional; nonconfigurable

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

xcode_config

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

La compilación --xcode_version_config puede hacer referencia a un solo destino de esta regla. marca para traducir la marca --xcode_version a una versión oficial aceptada de Xcode. Esto permite seleccionar una versión oficial de Xcode entre varios alias registrados.

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

default

Label; optional; nonconfigurable

La versión oficial predeterminada de Xcode que se usará. Se usará la versión que especifica el objetivo xcode_version proporcionado en los siguientes casos: no se especificó la marca de compilación xcode_version. Esto es obligatorio si existe versions. Es posible que no se establezca si remote_versions o Se estableció 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)

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 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 este destino.

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 SDK de macOS 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

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

String; optional; nonconfigurable

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

String; optional; nonconfigurable

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

Es el número de versión oficial de una versión de Xcode.