2011-05-13 35 views
17

lo sé, esto se ha preguntado un par de veces, pero sobre todo por Xcode 3.x. Para el IPAD, tengo dos proyectos tanto vivir en un espacio de trabajo comúnXcode 4: Cómo agregar biblioteca estática Objetivo Dependencia al Proyecto

  • Foo, una aplicación basada en la vista y
  • Foolib, una biblioteca Cacao-Touch estática

la antigua función de la último. Parece que no puedo averiguar cómo agregar esa dependencia. No está bien explicado en la documentación, por lo que trató lo siguiente:

  1. Haga clic en el proyecto de Foo en el área de navegación de la izquierda,
  2. Elija Versión de fases hasta la parte superior y expanda la sección Target Dependencias
  3. Haga clic en el botón más, pero la lista resultante está vacía.

También he intentado arrastrar/soltar el archivo .a en esa sección, con poco éxito. Además, la documentación indica

Si el producto de construcción de un proyecto en un espacio de trabajo depende de la acumulación de producto de otro proyecto en el espacio de trabajo (por ejemplo, si un proyecto construye una biblioteca usada por el otro proyecto), Xcode descubre tales dependencias y construcciones implícitas en la secuencia correcta.

Me pregunto cómo Xcode descubre esas dependencias. ¿Apple está diciendo que no tengo que agregar esta dependencia de destino en absoluto? Pero entonces, ¿cómo descubriría Xcode que uno está usando el otro?

Por último, pero no menos importante, necesitaré para obtener los archivos .h de Foolib través de Foo alguna manera. ¿Cuál es la forma recomendada de hacer eso? Obviamente, no quiero simplemente copiarlos. Con los marcos, los archivos de encabezado se incluyen, pero ¿qué hace la gente generalmente cuando trabaja con bibliotecas estáticas que ellos mismos desarrollan en paralelo?

Un empujón en la dirección correcta sería muy apreciado. Gracias.

Respuesta

13

En general, Xcode 4 parece descubrir las dependencias automáticamente a medida que la hoja de edición Esquema implica. Otros desarrolladores han mencionado que las dependencias no se detectan automáticamente y requieren una lista explícitamente:

Así, Editar Esquema -> Build -> añadir objetivos de su espacio de trabajo.

En cuanto a los archivos de cabecera de la biblioteca estática van, Xcode 4 parece tener un problema, al menos con la finalización de código y resaltado de sintaxis. La única manera en que puedo trabajar correctamente con clases en bibliotecas estáticas es arrastrar una copia de los archivos de encabezado en cuestión a una ubicación en una carpeta de grupo en el proyecto principal. Tenga en cuenta que debe desmarcar Agregar al destino ... Esto se ocupa del resaltado de la sintaxis y la finalización del código. El resto debe manejarse dándole la ruta de búsqueda de encabezado adecuada. Esa sería la ruta de búsqueda del encabezado del usuario = $ (BUILT_PRODUCTS_DIR), dependiendo de cómo configure sus preferencias de ubicación.

Ver: this link

+1

Gracias por eso. Entonces, al agregar Target al Scheme, Xcode compila Foolib antes que Foo, ¿verdad? Pero parece que también tengo que obtener libFoolib.a de alguna manera en mi proyecto Foo, de lo contrario, obtengo errores del enlazador, ¿verdad?Por el momento ni siquiera puedo hacer que Foolib construya; bueno, se construye con éxito, pero luego el libFoolib.a en el grupo Productos permanece rojo. ¿Alguna idea de lo que está pasando allí? – McKrassy

+0

Estoy teniendo problemas con la arquitectura AMR o i386 dependiendo de la ejecución en un dispositivo o emulador. Tal vez este es su problema (mientras compila la biblioteca estática en una arquitectura, el proyecto que utiliza esta biblioteca intenta vincularse con una biblioteca con una arquitectura diferente ...) –

+0

@MPenades yup) realmente necesita leer acerca de ** Bibliotecas universales ** mira esto. http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial – Resty

Cuestiones relacionadas