Reglas de Objective-C

Denuncia un problema Ver código fuente Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Reglas

objc_import

Ver la fuente de la regla
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, includes, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, 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

Un nombre único para este objetivo.

deps

Es una lista de etiquetas. El valor predeterminado es [].

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

Es una lista de etiquetas. El valor predeterminado es [].

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

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para que las fuentes los incluyan en esta regla o en reglas dependientes. Los encabezados que no están destinados a ser incluidos por 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.

Es un valor booleano; el valor predeterminado es False.

Si es 1, cualquier paquete o binario que dependa (directa o indirectamente) de esta biblioteca vinculará todos los archivos 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 binario. Esto es útil si el código en el objeto binario no llama explícitamente a tu código, p.ej., si tu código se registra para recibir una devolución de llamada que proporciona algún servicio.
archives

Es una lista de etiquetas obligatoria.

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

Es una lista de cadenas. El valor predeterminado es [].

Es la 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 toda la ruta de acceso del espacio de trabajo en sus sentencias #import/#include.

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

A diferencia de COPTS, estas marcas se agregan para esta regla y cada regla que depende 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

Es una lista de cadenas. El valor predeterminado es [].

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

Es una lista de cadenas. El valor predeterminado es [].

Son los nombres de los frameworks de SDK con los que se vinculará (p.ej., "AddressBook", "QuartzCore").

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

sdk_includes

Es una lista de cadenas. El valor predeterminado es [].

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

Es una lista de etiquetas. El valor predeterminado es [].

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

Es una lista de cadenas. El valor predeterminado es [].

Son los nombres de los frameworks de SDK con los que se establecerá una vinculación débil. Por ejemplo, "MediaAccessibility". A diferencia de los frameworks de SDK vinculados de forma habitual, 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, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, stamp, 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 determinados.

Argumentos

Atributos
name

Nombre: Obligatorio

Un nombre único para este objetivo.

deps

Es una lista de etiquetas. El valor predeterminado es [].

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

Es una lista de etiquetas. El valor predeterminado es [].

Es la lista de archivos de encabezado y fuente de C, C++, Objective-C y Objective-C++, o archivos de origen de ensamblado (".s", ".S" o ".asm") que se procesan para crear la biblioteca de destino. Estos son los archivos que se marcaron como enviados, además de los archivos generados. Los archivos de origen se compilan en archivos .o con Clang. Cualquier fuente o encabezado en el atributo srcs de este destino puede incluir o importar archivos de encabezado, pero no los encabezados en hdrs ni los destinos que dependen 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 compilación para evitar errores de vinculación de símbolos faltantes.
hdrs

Es una lista de etiquetas. El valor predeterminado es [].

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

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para que las fuentes los incluyan en esta regla o en reglas dependientes. Los encabezados que no están destinados a ser incluidos por 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.

Es un valor booleano; el valor predeterminado es False.

Si es 1, cualquier paquete o binario que dependa (directa o indirectamente) de esta biblioteca vinculará todos los archivos 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 binario. Esto es útil si el código en el objeto binario no llama explícitamente a tu código, p.ej., si tu código se registra para recibir una devolución de llamada que proporciona algún servicio.
copts

Es una lista de cadenas. El valor predeterminado es [].

Marcas adicionales para pasar 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 objetivo, no a los que dependen de él ni a los que dependen de él.

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

defines

Es una lista de cadenas. El valor predeterminado es [].

Marcas -D adicionales para pasar al compilador. Deben estar en el formato KEY=VALUE o simplemente KEY y se pasan no solo al compilador para este destino (como lo hacen copts), sino también a todos los elementos objc_ que dependen de este destino. Sujeto a la sustitución de "Make variable" y la tokenización de Bourne shell.
enable_modules

Es un valor booleano; el valor predeterminado es False.

Habilita la compatibilidad con el módulo clang (a través de -fmodules). Si estableces este valor en 1, podrás @importar encabezados del sistema y otros destinos: @import UIKit; @import path_to_package_target;
implementation_deps

Es una 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 están vinculadas en los destinos binarios que dependen de esta biblioteca.
includes

Es una lista de cadenas. El valor predeterminado es [].

Es la 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 toda la ruta de acceso del espacio de trabajo en sus sentencias #import/#include.

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

A diferencia de COPTS, estas marcas se agregan para esta regla y cada regla que depende 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

Es una lista de cadenas. El valor predeterminado es [].

Marcas adicionales para pasar al vinculador.
module_map

Etiqueta (Label); el valor predeterminado es None

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

Cadena; el valor predeterminado es ""

Establece el nombre del módulo para este objetivo. 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

Es una lista de etiquetas. El valor predeterminado es [].

Es la 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 (Label); el valor predeterminado es None

Es el archivo de encabezado que se agregará a cada archivo fuente que se compilará (tanto con ARC como sin ARC). Se desaconseja el uso de archivos PCH en los archivos BUILD, y se debe considerar que dejó de estar disponible. Dado que los archivos PCH no se precompilan, esta no es una mejora de la velocidad de compilación, sino solo una dependencia global. Desde el punto de vista de la eficiencia de compilación, es mejor incluir lo que necesitas directamente en tus fuentes donde lo necesitas.
sdk_dylibs

Es una lista de cadenas. El valor predeterminado es [].

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

Es una lista de cadenas. El valor predeterminado es [].

Son los nombres de los frameworks de SDK con los que se vinculará (p.ej., "AddressBook", "QuartzCore").

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

sdk_includes

Es una lista de cadenas. El valor predeterminado es [].

Es la lista de rutas de acceso de búsqueda de #include/#import que se agregarán a este objetivo y a todos los objetivos dependientes, en los que cada ruta de acceso es relativa a $(SDKROOT)/usr/include.
stamp

Es un valor booleano; el valor predeterminado es False.

textual_hdrs

Es una lista de etiquetas. El valor predeterminado es [].

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

Es una lista de cadenas. El valor predeterminado es [].

Son los nombres de los frameworks de SDK con los que se establecerá una vinculación débil. Por ejemplo, "MediaAccessibility". A diferencia de los frameworks de SDK vinculados de forma habitual, 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.