Reglas de Objective-C

Informar un problema Ver fuente Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Reglas

j2objc_library

Ver el código 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 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

Nombre: obligatorio.

Un nombre único para este destino.

deps

Lista de etiquetas; el valor predeterminado es []

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, incluidos los archivos generados por el procesamiento de anotaciones Java. No se admiten los destinos code>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 red. 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

Lista de cadenas; el valor predeterminado es []

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

Lista de etiquetas; el valor predeterminado es []

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

Ver el código fuente de la regla
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)

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

Nombre: obligatorio.

Un nombre único para este destino.

deps

Lista de etiquetas; el valor predeterminado es []

Es la lista de destinos de los que depende este objetivo.
hdrs

Lista de etiquetas; el valor predeterminado es []

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; el valor predeterminado es 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

Lista de etiquetas; obligatorio.

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

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Lista de etiquetas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Ver el código 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, 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)

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

Argumentos

Atributos
name

Nombre: obligatorio.

Un nombre único para este destino.

deps

Lista de etiquetas; el valor predeterminado es []

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

Lista de etiquetas; el valor predeterminado es []

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

Lista de etiquetas; el valor predeterminado es []

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; el valor predeterminado es 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

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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; el valor predeterminado es 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

Lista de etiquetas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

Marcas adicionales para pasar al vinculador.
module_map

Etiqueta; el valor predeterminado es None

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; el valor predeterminado es ""

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

Lista de etiquetas; el valor predeterminado es []

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

Etiqueta; el valor predeterminado es None

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.
sdk_dylibs

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Lista de etiquetas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

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

Ver el código fuente de la regla
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

Nombre: obligatorio.

Un nombre único para este destino.

default

Etiqueta; no configurable; obligatorio.

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

Lista de etiquetas; no configurable; el valor predeterminado es []

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

xcode_config

Ver el código fuente de la regla
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

Nombre: obligatorio.

Un nombre único para este destino.

default

Etiqueta; no configurable; el valor predeterminado es None

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

Etiqueta; no configurable; el valor predeterminado es None

Los destinos de xcode_version que están disponibles de forma local Estos se usan junto con local_versions para seleccionar un elemento versión. Es posible que no se establezca si se configura versions.
remote_versions

Etiqueta; no configurable; el valor predeterminado es None

Los destinos de xcode_version que están disponibles de forma remota Estos se usan junto con remote_versions para seleccionar un elemento versión. Es posible que no se establezca si se configura versions.
versions

Lista de etiquetas; no configurable; el valor predeterminado es []

Se aceptaron xcode_version de objetivos que pueden utilizarse. Si el valor de la marca de compilación xcode_version coincide con uno de los alias o el número de versión de cualquiera de los objetivos xcode_version, la coincidencia destino. Es posible que no se establezca si remote_versions o Se estableció local_versions.

xcode_version

Ver el código fuente de la regla
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

Nombre: obligatorio.

Un nombre único para este destino.

default_ios_sdk_version

String; no configurable; el valor predeterminado es ""

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; no configurable; el valor predeterminado es ""

Es 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; no configurable; el valor predeterminado es ""

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; no configurable; el valor predeterminado es ""

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; no configurable; el valor predeterminado 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; no configurable; obligatorio.

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