KgkrB

Como añadir una librería estática a un proyecto iOS con Xcode 4

Librería estática en iOS

Lamentablemente, con iOS no se pueden usar librerías (bibliotecas, para los puristas) dinámicas, o frameworks. Por lo tanto, la única forma ( a parte de importar los archivos .h y .m ) de aprovechar código ajeno o reaprovechar código común de otros proyectos, es usar una librería estática.

Ahora bien, ¿cómo puñetas se incluye una librería estática a un proyecto de Xcode 4? A lo mejor es que soy torpe, pero he buscado y rebuscado y no encontré ninguna instrucción clara de como proceder.

CHDataStructures

Como creía necesitar una clase pila (Stack), opté por usar CHDataStructures, una librería con varias estructuras de datos clásicas (pilas, árboles, colas, tablas hash y demás) implementadas en Objective C. Digo creía, por que luego resultó ser un error, al observar con más atención a NSArray. En otro artículo explicaré esto con más detalle y por qué realmente no necesitamos para nada CHDataStructures.

En fin,  después de mucho patalear y probar, he aquí el procedimiento paso a paso que hay que seguir para incluir una librería estática (la que sea) a un proyecto de Xcode 4.

Añadir una librería estática a Xcode 4

Paso 1: Añade las fuentes de tu librería a un “Source Tree”

Ve a las preferencias de Xcode 4 y selecciona la pestaña Source trees. Añade una nueva donde el name y display name son MI_LIB_SRC.

Paso 2: Añade el proyecto de la librería a tu proyecto

Selecciona tu proyecto y del menú contextual selecciona “Add files to project”.

Selecciona el proyecto de la librería y añadelo. Asegúrate de no copiarlo sino sólo crear una referencia. El proyecto de tu librería estática debería de aparecer ahora como un subproyecto dentro del tuyo.

Paso 3: Asegúrate de que tu librería también sea compilada al compilar tu proyecto

Tenemos que modificar tu target de aplicación.  Selecciona el target de aplicación y vete a la pestaña “Build Phases”. Abre el grupo “target dependencies” y añade la librería (el archivo libXXX.a).

Ve a “Build Settings” y modifica los “User Header Search paths”. Haz doble clic sobre el valor y escribe $(MI_LIB_SRC). Asegúrate de seleccionar la opción recursiva.

Paso 3a: Modifica el User Header Search Paths a nivel de proyecto

Tenemos que hacer una modificación similar a nivel del proyecto (no solo del target).  Selecciona tu proyecto y ve a la pestaña Build Settings. Modifica el User Header Search Paths. Haz doble clic sobre el valor y escribe $(MI_LIB_SRC). Asegúrate de seleccionar la opción recursiva.

Paso 4: Asegúrate de que tu librería estática está enlazada con tu ejecutable

Selecciona tu target de aplicación  y abre la pestaña Build Phases. Abre e grupo Link Binary With Libraries y añade tu librería estática.

Encomiéndate a Santa Rita, abogada de lo imposible y compila. Debería de funcionar.

 

Fernando Rodríguez

Sígueme en twitter.
Cursos de desarrollo iPhone

Acerca de Fernando Rodriguez

Fundador & Editor Jefe de CocoaMental, Fernando Rodríguez (@frr149 & Linkedin) es desarrollador & un experto en la enseñanza de máxima calidad en programación y desarrollo para dispositivos iOS, Cocoa Touch, Objective C, Swift, Python, entre otros, aunque su mejor carta de presentación, es la opinión de sus alumnos: http://keepcoding.io/es/testimonio/ CLO en KeepCoding & Arunovo. Instructor de iOS Avanzado del Big Nerd Ranch. Profesor Asociado de la U-tad, autor invitado de revistas como iPhoneWorld, Applesfera.com & ponente habitual en conferencias dentro y fuera de España (iOSDevUK, CodeMotion, BCNDevCon, etc). En sus vidas anteriores fue un nerd de Python y Django, mago de Smalltalk, y para su pesar, galeote de C++ y un gran cocinero.

Share this:

2 comments, add yours.

Ginppian

Gracias y con Xcode 8 ?

Leave a comment