2011-08-07 26 views
15

por supuesto que investigué antes de publicar mi pregunta.Añadiendo un marco a XCode 4

Miré a
How to "add existing frameworks" in Xcode 4?
Adding Framework in Xcode 4
Adding an OpenGL framework in Xcode 4
XCode 4 adding dylib

pero todo el asunto se está convirtiendo mal.

Mi objetivo: Añadir (CorePlot) marco para proyecto XCode Mac (no un iPhone uno)

Mi entorno: OSX Lion 10.7, SDK león, XCode 4.1 (4B110)

Mis pasos:

  • XCode abren, crean nuevo proyecto
  • descargados CorePlot en mi directorio bibliotecas (como ~/Aplicaciones/LIBS)
  • Preferencias de proyecto abiertas, a través de (+) diálogo abierto para agregar el marco
  • Agregar marco existente (+ copiar archivos a dest. grupo si es necesario)
  • El directorio seleccionado fue de ~/Aplicaciones/LIBS/CorePlot/Binarios/MacOS/CorePlot.framework/
  • DnD CorePlot a Marcos Grupo
  • Agregado CorePlot a Build Phases > Link Binary with Libraries

y corrió mi proyecto

lo que tengo es este mensaje de error:

dyld: Library not loaded: @loader_path/../Frameworks/CorePlot.framework/Versions/A/CorePlot 
Referenced from: /Users/username/Library/Developer/Xcode/DerivedData/metralight-hjuvuwlhgohrtdeepvcymnsaxomc/Build/Products/Debug/metralight.app/Contents/MacOS/metralight 
Reason: image not found 

Y i n hecho, cuando miré en el directorio dado (aplicación paquete) no había ningún directorio Frameworks por lo que la vinculación no puede tener éxito

He buscado una más, y se encontró, que puedo crear Build Rule y copiar archivos en paquete binario final a través de algún script, pero ¿es esta la única forma de hacerlo?

¿No hay alguna opción para activar/desactivar la copia de marcos vinculados al paquete final?

Tenga en cuenta que CorePlot target '.marco' tiene Dynamic Library Install Name conjunto de @loader_path/../Frameworks/CorePlot.framework/Versions/A/CorePlot, por lo que está buscando en el lugar correcto en el paquete binario final

Respuesta

28

Después de añadir marco a través de 'Añadir marco existente'

  • Ir a Project Settings>Build Phases
  • En la esquina inferior derecha clic Add buid phase>Copy Files
  • Seleccionar Destino>Frameworks
  • Arrastra & Coloca el marco en la lista de archivos

Y eso es todo.

+0

Eso no tiene ningún diffrence aquí !!! Me estoy perdiendo smthing.Tried este método –

+0

ki wrked hacia fuera como esto no es necesario añadir los archivos a través de "añadir marco existente" –

+0

gracias, funcionó para mí :) – NSExpression

4

Otro detalle importante aquí - debe tener la "ruta de búsqueda en tiempo de ejecución", que se define en los proyectos, que está vacío por defecto.

Algo como esto:

LD_RUNPATH_SEARCH_PATHS = @loader_path/../Frameworks