2011-06-01 12 views
8

Tengo un proyecto en XCode4 con un proyecto dependiente (pasa a ser el proyecto Kal).XCode4 no está enlazando el proyecto recién compilado de la biblioteca estática (dependiente)

Cuando actualizo el proyecto Kal desde dentro de XCode, a continuación, ejecutar el proyecto principal, (esto ocurre en el mismo espacio de trabajo por cierto), que se ve como XCode compila el proyecto Kal modificado pero no se vincula a la recién compilado libKal.a archivo.

Estoy ejecutando uno de los esquemas de proyectos primarios predeterminados. De los registros puedo decir que cuando se ejecuta, construye el proyecto dependiente antes de que construya el proyecto principal. Pero la única forma en que puedo hacer que el proyecto principal use mis cambios es si vuelvo a agregar el producto libKal.a como una biblioteca para vincular, en la sección "Enlace binario con bibliotecas" del destino de compilación principal.

Quizás las pistas: - Estoy usando LLVM, - Tengo el indicador -all_load activado.

+1

Probablemente se topó con este tema: http://stackoverflow.com/questions/6204364/changing-the-source-of-a-static-library-needs-clean-and-build-in- xcode-4 – LearnCocos2D

Respuesta

0

¿Qué pasa si se intenta:

  • Limpio
  • Reconstruir

Que por lo general funciona para mí en estos casos ...

0

Verificar los Esquemas. Para la aplicación que depende de una biblioteca, asegúrese de que la dependencia se está creando cada vez. He leído que el esquema ya debería tener esta actualización, pero a veces no es así. Se puede ver un ejemplo aquí ...

http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/#configuring_the_projects_scheme

Básicamente Editar el esquema para la aplicación y haga clic en el elemento de construcción en la parte superior izquierda. Verá cada uno de los objetivos que se ejecuta como parte de esa compilación. Si no ve el objetivo para una dependencia, puede agregarlo. Luego, asegúrese de que su aplicación aparezca en la lista final para que todas las dependencias se creen primero.

0

Puedo sugerirle que use un único espacio de trabajo para su biblioteca y proyectos principales. En el esquema del proyecto principal, agregue el objetivo de la biblioteca antes de su ruta de búsqueda principal (para compilar la biblioteca antes del objetivo principal) y la configuración de los encabezados.

0

Simplifica tu vida y usa cocoaPods. Aquí hay un buen tutorial. CocoaPods creará automáticamente un espacio de trabajo con todas las bibliotecas que necesita para su proyecto. Solía ​​tener todo tipo de problemas como este con las bibliotecas, y ahora solo uso Pods.

0

Según cómo haya configurado su proyecto, Xcode no necesariamente volverá a vincular las bibliotecas dependientes. Para hacer que se vincule todo el tiempo, debe agregar el proyecto como Dependencia del objetivo en las fases de compilación del objetivo al que desea que se vincule la biblioteca.

Digamos que tiene un espacio de trabajo llamado Test y dos proyectos con el nombre TestApplication y TestLibrary. Si los tiene incluidos en el espacio de trabajo como proyectos separados, podrá agregar TestLibrary.a a TestApplication como biblioteca en la sección "Enlace binario con bibliotecas" de las fases de compilación del objetivo TestApplication, pero NO SERÁ capaz de agregarlo en la sección "Dependencias de destino".

Ahora, si mueve TestLibrary para que sea un subproyecto de TestAppliction (simplemente arrástrelo dentro del proyecto dentro del navegador del proyecto), podrá agregar TestLibrary como una biblioteca para vincular con AND como objetivo Dependencia de TestApplication. Agregarlo como Dependencia de destino asegura que Xcode construirá (si es necesario) y vinculará la biblioteca.

Lo siento, pero ha pasado un tiempo desde que me di cuenta de que esto configuraba mis propios proyectos de esta manera, así que no recuerdo exactamente cuál es la situación en la que la biblioteca no se vincula. Creo que fue algo así como que, como se trataba de un proyecto separado, Xcode no verificaría si necesitaba construir nuevamente y si solo estaba vinculado con la biblioteca anterior. Sin embargo, recuerdo que mi trabajo hasta que me di cuenta de esto fue simplemente tocar un archivo en el proyecto que necesitaba construir. Tenía un archivo llamado touchMe que se incluyó como una fuente de compilación si el proyecto de la biblioteca que tocaría antes de construir. Podría hacer lo mismo para ver si eso soluciona su problema también, si mover el proyecto de la biblioteca al proyecto dependiente no es una opción para usted.

Espero que ayude.

Cuestiones relacionadas