Reglas de Objective-C

Informar un problema Ver código fuente Nocturno · 8.4 · 8.3 · 8.2  · 8.1 8.1  ·  8.0  8.0  ·  7.6  7.6 

Reglas

j2objc_library

Ver la 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 de Java a Objective-C, que luego se pueden usar como dependencias de las reglas objc_library y objc_binary. Encontrarás información detallada sobre J2ObjC en el sitio de J2ObjC.

Las marcas de transpilación de 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, la misma configuración que para las fuentes de una regla objc_library sin opciones de compilación especificadas en los atributos.

Además, el código generado se elimina de forma duplicada a nivel del destino, no a nivel de la fuente. Si tienes dos destinos de Java diferentes que incluyen los mismos archivos fuente 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 de origen de Java compartidos a un destino común independiente del que se pueda depender.

Argumentos

Atributos
name

Nombre: Obligatorio

Es un nombre único para este destino.

deps

Lista de etiquetas. El valor predeterminado es [].

Lista de destinos j2objc_library, java_library, java_import y java_proto_library que contienen archivos Java que se deben transpilar a Objective-C.

Todos los destinos java_library y java_import a los que se pueda acceder 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 de Java. No se admiten los destinos code>java_import sin srcjar especificado.

La traducción de J2ObjC funciona de manera diferente según el tipo de archivos fuente de Java incluidos en el cierre transitivo. Para cada archivo fuente .java incluido en srcs de java_library, se generará un archivo fuente .h y .m correspondiente. Para cada archivo .jar de origen incluido en srcs de java_library o srcjar de java_import, se generará un archivo fuente .h y .m correspondiente con todo el código de ese archivo .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 las rutas relativas a la raíz de los artefactos originales de Java. 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 de proto_library están en el cierre transitivo de esta regla, los protos de J2ObjC también se generarán, compilarán y vincularán a nivel binario. Para el archivo .proto //some/proto/foo.proto, los usuarios pueden hacer referencia al código generado con la ruta de importación some/proto/foo.j2objc.pb.h.

entry_classes

Lista de cadenas; el valor predeterminado es []

Lista de clases de Java cuyas contrapartes traducidas de ObjC se referenciarán directamente en el código de ObjC del usuario. Este atributo es obligatorio si la marca --j2objc_dead_code_removal está activada. Las clases de Java se deben especificar con sus nombres canónicos, según se definen 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 el análisis de código no utilizado. Luego, se quitarán las clases sin usar del paquete final de la app en Objective-C.
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 esta regla j2objc_library. De forma predeterminada, solo se vincula la funcionalidad principal del JRE.

objc_import

Ver la 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 archivo .a. También permite exportar encabezados y recursos con los mismos atributos que admite objc_library.

Argumentos

Atributos
name

Nombre: Obligatorio

Es un nombre único para este destino.

deps

Lista de etiquetas. El valor predeterminado es [].

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

Lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos de encabezado de C, C++, Objective-C y Objective-C++ que publica esta biblioteca para que los incluyan las fuentes en reglas dependientes.

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para su inclusión por parte de las fuentes en esta regla o en reglas dependientes. Los encabezados que no deben incluirse en un cliente de esta biblioteca deben aparecer en el atributo srcs.

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

Booleano; el valor predeterminado es False

Si es 1, cualquier paquete o archivo binario que dependa (directa o indirectamente) de esta biblioteca vinculará todos los archivos de objeto de los archivos que se enumeran en srcs y non_arc_srcs, incluso si algunos no contienen símbolos a los que hace referencia el archivo binario. Esto es útil si el código no se llama de forma explícita en el código binario, por ejemplo, si el código se registra para recibir alguna devolución de llamada proporcionada por algún servicio.
archives

Lista de etiquetas; obligatoria

Es la lista de archivos .a proporcionados a los destinos de Objective-C que dependen de este destino.
includes

Lista de cadenas; el valor predeterminado es []

Lista de rutas de acceso de búsqueda de #include/#import que se agregarán a este destino y a todos los destinos dependientes. Esto es para admitir bibliotecas de terceros y de código abierto que no especifican la ruta de acceso completa del espacio de trabajo en sus instrucciones #import/#include.

Las rutas de acceso se interpretan en relación con el directorio del paquete, y las raíces de genfiles y bin (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 para todas las reglas que dependen de ella. (Nota: No son las reglas de las que depende). Ten mucho cuidado, ya que esto puede tener efectos de gran alcance. Si tienes dudas, agrega marcas "-iquote" a COPTS.

sdk_dylibs

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

Nombres de los frameworks del SDK con los que se vinculará (p.ej., "AddressBook", "QuartzCore"). "UIKit" y "Foundation" siempre se incluyen cuando se compila para las plataformas iOS, tvOS, visionOS y watchOS. En macOS, solo se incluye "Foundation" de forma predeterminada.

Cuando se vincula un objeto binario de Apple de nivel superior, se vinculan todos los frameworks del SDK que se enumeran en el gráfico de dependencia transitiva de ese objeto binario.

sdk_includes

Lista de cadenas; el valor predeterminado es []

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

Lista de etiquetas. El valor predeterminado es [].

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

Lista de cadenas; el valor predeterminado es []

Nombres de los frameworks del SDK con los que se realizará una vinculación débil. Por ejemplo, "MediaAccessibility". A diferencia de los frameworks del SDK vinculados de forma regular, los símbolos de los frameworks vinculados de forma débil no causan un error si no están presentes en el tiempo de ejecución.

objc_library

Ver la 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

Es un nombre único para este destino.

deps

Lista de etiquetas. El valor predeterminado es [].

Es la lista de destinos que se vinculan para formar el paquete final.
srcs

Lista de etiquetas. El valor predeterminado es [].

Lista de archivos de encabezado y fuente de C, C++, Objective-C y Objective-C++, o bien archivos fuente de ensamblado (`.s`, `.S` o `.asm`) que se procesan para crear el destino de la biblioteca. Estos son tus archivos confirmados, además de los archivos generados. Los archivos de origen se compilan en archivos .o con Clang. Los archivos de encabezado se pueden incluir o importar en cualquier encabezado o fuente del atributo srcs de este destino, pero no en los encabezados de hdrs ni en ningún destino que dependa de esta regla. Además, se pueden proporcionar archivos .o precompilados como srcs. Ten cuidado de garantizar la coherencia en la arquitectura de los archivos .o proporcionados y la de la compilación para evitar errores del vinculador de símbolos faltantes.
hdrs

Lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos de encabezado de C, C++, Objective-C y Objective-C++ que publica esta biblioteca para que los incluyan las fuentes en reglas dependientes.

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para su inclusión por parte de las fuentes en esta regla o en reglas dependientes. Los encabezados que no deben incluirse en un cliente de esta biblioteca deben aparecer en el atributo srcs.

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

Booleano; el valor predeterminado es False

Si es 1, cualquier paquete o archivo binario que dependa (directa o indirectamente) de esta biblioteca vinculará todos los archivos de objeto de los archivos que se enumeran en srcs y non_arc_srcs, incluso si algunos no contienen símbolos a los que hace referencia el archivo binario. Esto es útil si el código no se llama de forma explícita en el código binario, por ejemplo, si el código se registra para recibir alguna devolución de llamada proporcionada por algún servicio.
copts

Lista de cadenas; el valor predeterminado es []

Son marcas adicionales que se pasan al compilador. Sujeto a la sustitución de "Make variable" y la tokenización de Bourne shell. Estas marcas solo se aplicarán a este destino, y no a aquellos de los que depende ni a aquellos que dependen de él.

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

defines

Lista de cadenas; el valor predeterminado es []

Son marcas -D adicionales para pasar al compilador. Deben tener la forma KEY=VALUE o simplemente KEY, y se pasan no solo al compilador de este destino (como copts), sino también a todos los dependientes de objc_ de este destino. Sujeto a la sustitución de "Make variable" y la tokenización de Bourne shell.
enable_modules

Booleano; el valor predeterminado es False

Habilita la compatibilidad con módulos de clang (a través de -fmodules). Si configuras este valor en 1, podrás importar encabezados del sistema y otros destinos con @import: @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 el destino de la biblioteca. A diferencia de deps, los encabezados y las rutas de inclusión de estas bibliotecas (y todas sus dependencias transitivas) solo se usan para la compilación de esta biblioteca, y no para las bibliotecas que dependen de ella. Las bibliotecas especificadas con implementation_deps aún se vinculan en los destinos binarios que dependen de esta biblioteca.
includes

Lista de cadenas; el valor predeterminado es []

Lista de rutas de acceso de búsqueda de #include/#import que se agregarán a este destino y a todos los destinos dependientes. Esto es para admitir bibliotecas de terceros y de código abierto que no especifican la ruta de acceso completa del espacio de trabajo en sus instrucciones #import/#include.

Las rutas de acceso se interpretan en relación con el directorio del paquete, y las raíces de genfiles y bin (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 para todas las reglas que dependen de ella. (Nota: No son las reglas de las que depende). Ten mucho cuidado, ya que esto puede tener efectos de gran alcance. Si tienes dudas, agrega marcas "-iquote" a COPTS.

linkopts

Lista de cadenas; el valor predeterminado es []

Son marcas adicionales que se pasan al vinculador.
module_map

Etiqueta: El valor predeterminado es None.

Es un mapa de módulos de Clang personalizado para este destino. No se recomienda usar un mapa de módulos personalizados. La mayoría de los usuarios deberían usar los mapas de módulos generados por Bazel. Si se especifica, Bazel no generará un mapa de módulos para este destino, sino que pasará el mapa de módulos proporcionado al compilador.
module_name

Cadena. 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 acceso 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 [].

Lista de archivos Objective-C que se procesan para crear el objetivo de biblioteca que NO usa ARC. Los archivos de este atributo se tratan de manera muy similar a los del atributo srcs, pero se compilan sin ARC habilitado.
pch

Etiqueta: El valor predeterminado es None.

Archivo de encabezado que se antepone a cada archivo fuente que se compila (tanto arc como no arc). Se desaconseja activamente el uso de archivos pch en los archivos BUILD, y esto se debe considerar como una función obsoleta. Dado que los archivos pch no se precompilan, esto no mejora la velocidad de compilación, sino que es solo una dependencia global. Desde el punto de vista de la eficiencia de la compilación, es mejor incluir lo que necesitas directamente en tus fuentes donde lo necesites.
sdk_dylibs

Lista de cadenas; el valor predeterminado es []

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

Lista de cadenas; el valor predeterminado es []

Nombres de los frameworks del SDK con los que se vinculará (p.ej., "AddressBook", "QuartzCore"). "UIKit" y "Foundation" siempre se incluyen cuando se compila para las plataformas iOS, tvOS, visionOS y watchOS. En macOS, solo se incluye "Foundation" de forma predeterminada.

Cuando se vincula un objeto binario de Apple de nivel superior, se vinculan todos los frameworks del SDK que se enumeran en el gráfico de dependencia transitiva de ese objeto binario.

sdk_includes

Lista de cadenas; el valor predeterminado es []

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

Lista de etiquetas. El valor predeterminado es [].

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

Lista de cadenas; el valor predeterminado es []

Nombres de los frameworks del SDK con los que se realizará una vinculación débil. Por ejemplo, "MediaAccessibility". A diferencia de los frameworks del SDK vinculados de forma regular, los símbolos de los frameworks vinculados de forma débil no causan un error si no están presentes en el tiempo de ejecución.

available_xcodes

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

Una instancia de la 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 Xcode entre las versiones disponibles de forma colectiva.

Argumentos

Atributos
name

Nombre: Obligatorio

Es un nombre único para este destino.

default

Label: No configurable; obligatorio

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

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

Son las versiones de Xcode disponibles en esta plataforma.

xcode_config

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

La marca de compilación --xcode_version_config puede hacer referencia a un solo destino de esta regla 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

Es un nombre único para este destino.

default

Etiqueta; no configurable; el valor predeterminado es None

Es la versión oficial predeterminada de Xcode que se usará. Se debe usar la versión especificada por el destino xcode_version proporcionado si no se especifica ninguna marca de compilación xcode_version. Es obligatorio si se configura algún versions. No se puede establecer si se configuran remote_versions o local_versions.
local_versions

Etiqueta; no configurable; el valor predeterminado es None

Son los objetivos xcode_version que están disponibles a nivel local. Se usan junto con local_versions para seleccionar una versión disponible mutuamente. Es posible que no se establezca si se configura versions.
remote_versions

Etiqueta; no configurable; el valor predeterminado es None

Son los destinos xcode_version que están disponibles de forma remota. Se usan junto con remote_versions para seleccionar una versión disponible mutuamente. Es posible que no se establezca si se configura versions.
versions

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

Son los destinos xcode_version aceptados que se pueden usar. 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 destinos xcode_version proporcionados, se usará el destino coincidente. No se puede establecer si se configuran remote_versions o local_versions.

xcode_version

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

Argumentos

Atributos
name

Nombre: Obligatorio

Es un nombre único para este destino.

default_ios_sdk_version

Cadena; 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

Cadena; no configurable; el valor predeterminado es ""

Es la versión del SDK de Mac OS X 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

Cadena; no configurable; el valor predeterminado es ""

Es 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_visionos_sdk_version

Cadena; no configurable; el valor predeterminado es ""

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

Cadena; no configurable; el valor predeterminado es ""

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

Cadena; no configurable; obligatorio

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