Reglas de Objective-C

Informar un problema Ver fuente Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Reglas

objc_import

Ver la fuente de la regla
objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, includes, package_metadata, 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)

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 las reglas dependientes.

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para que las fuentes de esta regla o de reglas dependientes los incluyan. 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 del binario no llama a tu código de forma explícita, por ejemplo, si tu código se registra para recibir alguna devolución de llamada proporcionada por algún servicio.
archives

Lista de etiquetas; obligatorio

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 archivo binario tiene fuentes en 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").

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 dependencias transitivas 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 objetivo y a todos los objetivos 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 .h, 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 vinculará de forma 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 provocan 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, conlyopts, copts, cxxopts, defines, deprecation, enable_modules, exec_compatible_with, exec_group_compatible_with, exec_properties, features, implementation_deps, includes, linkopts, module_map, module_name, non_arc_srcs, package_metadata, 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 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 de los que depende este destino.
srcs

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 bien archivos de origen 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. Cualquier archivo fuente o de 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 dependan 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 las reglas dependientes.

Estos encabezados describen la interfaz pública de la biblioteca y estarán disponibles para que las fuentes de esta regla o de reglas dependientes los incluyan. 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 del binario no llama a tu código de forma explícita, por ejemplo, si tu código se registra para recibir alguna devolución de llamada proporcionada por algún servicio.
conlyopts

Lista de cadenas; el valor predeterminado es []

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

Ten en cuenta que, para el proyecto de Xcode generado, las rutas de acceso a directorios especificadas con marcas "-I" en copts se analizan, 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.

copts

Lista de cadenas; el valor predeterminado es []

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

Ten en cuenta que, para el proyecto de Xcode generado, las rutas de acceso a directorios especificadas con marcas "-I" en copts se analizan, 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.

cxxopts

Lista de cadenas; el valor predeterminado es []

Son marcas adicionales que se pasan al compilador para los archivos de Objective-C++ y C++. Sujeto a la sustitución de "Make variable" y la tokenización de Bourne shell. Estos parámetros solo se aplicarán a este destino, y no a aquellos de los que depende ni a los que dependen de él.

Ten en cuenta que, para el proyecto de Xcode generado, las rutas de acceso a directorios especificadas con marcas "-I" en copts se analizan, 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 elementos objc_ que dependen 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.

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

Es la lista de archivos Objective-C que se procesan para crear el destino de la biblioteca que NO usa el recuento automático de referencias (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.

Es el archivo de encabezado que se antepone a cada archivo fuente que se compila (tanto arc como no arc). El uso de archivos pch se desaconseja activamente en los archivos BUILD, y 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 archivo binario tiene fuentes en 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").

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 dependencias transitivas 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 objetivo y a todos los objetivos dependientes, en la que cada ruta de acceso es relativa a $(SDKROOT)/usr/include.
stamp

Booleano; el valor predeterminado es False

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 .h, 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 vinculará de forma 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 provocan un error si no están presentes en el tiempo de ejecución.