2012-04-22 8 views
10

Estoy usando Xcode 4.3 para crear un marco para OS X. Creé un espacio de trabajo y un proyecto (con un objetivo de marco) para ir a este espacio de trabajo.Dependencia de destino entre dos proyectos en el mismo espacio de trabajo

Ahora, quiero incluir & vínculo con un marco de terceros que también he añadido a la misma área de trabajo (pero no dentro de mi proyecto). Hice clic en el botón + en la fase de compilación "Link Binary With Libraries", y el marco de terceros simplemente apareció en la lista de bibliotecas disponibles.

El marco vinculados muestra en rojo en el Navegador de proyectos, como la biblioteca de terceros no se ha construido todavía (confusamente, sin embargo, mi proyecto construye con éxito - aunque todavía no estoy tratando de uso la tercera marco del partido):

que iba a resolver esto mediante la adición como una dependencia de destino, pero cuando hago clic + en las "dependencias objetivo" fase de construcción, el objetivo de terceros doesn' t aparecer en la lista.

¿Cómo debo configurar/resolver adecuadamente esta dependencia? Además, ¿necesito crear una fase de compilación de Copiar archivos para garantizar que el marco se copie en el directorio de marcos de mi destino? ¿Cómo podría configurar eso correctamente?

+0

Creo que Xcode lo creará automáticamente como una dependencia ya que se está enlazando a él. Puede que no aparezca debido a esto. El marco probablemente sea rojo porque solo detectará el archivo para la configuración de lanzamiento. – ughoavgfhw

+0

@ughoavgfhw Sí, creo que he leído que puede detectar y construir automáticamente dependencias dentro del espacio de trabajo. ¿Pero por qué dices que solo detectará el archivo en la configuración de lanzamiento? (Acabo de probar Producto> Crear para> Archivar, y todavía está en rojo.) ¿Y crees que necesito configurar explícitamente una fase de Copiar archivos? – jtbandes

+0

La última vez que miré, las referencias de salida usaron la ruta de acceso de la versión de lanzamiento. Además, si agregó un proyecto anterior a un nuevo espacio de trabajo, la referencia podría estar haciendo referencia a una ubicación de compilación diferente, por lo que tampoco funcionaría. Si desea empaquetar el marco dentro de su aplicación, debe configurar una fase de archivos de copia. – ughoavgfhw

Respuesta

10

Encontré algo similar pero con librerías estáticas.

  • Haz lo que hizo para construir el marco, construir su aplicación (incluso si falla, el marco debe construir)
  • eliminar la referencia al marco en la fase de enlace de construcción de tu objetivo aplicación
  • Busque el construido marco en el Finder (el construido por el espacio de trabajo de su aplicación).
  • arrástrela o suéltela en el proyecto de aplicación que la utiliza. Observe que esta vez aparece con color negro (no rojo)
  • haga clic en él y asegúrese de que el inspector de Xcode muestre "en relación con los productos construidos" (es posible que deba cambiar el tipo de referencia) y que la ruta sea solo la myframework.framework.
  • compruebe que se ha agregado a la fase de enlace de la aplicación (debería)
  • que es el que puede utilizar en la fase de copia/construcción.
+0

Para futuros lectores: esta solución vino de [este hilo de foros de desarrolladores] (https://devforums.apple.com/thread/148935) donde puede encontrar más discusión. – jtbandes

+4

Agregar '$ (BUILT_PRODUCTS_DIR)' a las rutas de búsqueda de Framework/Library podría ser útil. – superlukas

Cuestiones relacionadas