2012-05-03 8 views
5

Como un nuevo desarrollador de MAc proveniente de VS, realmente no 'entiendo' qué es un framework. Si agrego un marco a mi proyecto, ¿esto significa automáticamente que los encabezados se deben encontrar cuando lo hago #include <SomeFile.h>?XCode3 - relación entre las rutas de búsqueda de la biblioteca y los marcos del proyecto

Parece que en algunos casos tengo que agregar rutas de búsqueda de encabezado también. ¿Eso significa que el marco no está funcionando bien?

Respuesta

3

Si la estructura está escrita correctamente, contiene los encabezados y el archivo enlazable (binario). El compilador (GCC anteriormente, LLVM-clang recientemente) reconoce las rutas del marco y sabe automáticamente dónde buscar los encabezados del marco. Hay algunos casos de esquina sin embargo:

  1. Si no agrega un marco, pero en realidad una biblioteca tradicional de Unix (libsqlite3.dylib, libxml2.dylib etc.) de/usr/lib. Entonces puede ser el caso que la biblioteca tenga una ruta de inclusión separada (no estándar); esto es común, por ejemplo, en el caso de glib. En este caso, debe agregar /usr/include/glib-2.0 a la ruta de búsqueda del encabezado.
  2. El caso opuesto: cuando se encuentra con algunos de los marcos "paraguas" (por ejemplo, Core Audio se divide en pequeños subtramas, como AudioToolbox.framework etc.), entonces ese marco particular no contiene una dinámica enlazable biblioteca, solo encabezados.

Espero que esto ayude.

4

Según lo definido por la Apple Conceptual Documentation:

Un marco es un directorio jerárquico que encapsula compartida recursos, tales como una biblioteca dinámica compartida, archivos nib, archivos de imagen, cadenas localizadas, archivos de cabecera, y la referencia documentación en un solo paquete .

En otras palabras, es una compilación de recursos que pueden ser utilizados por una o más aplicaciones, y no es una aplicación en sí misma.

detallado por parte del Apple Conceptual Documentation:

Se incluyen archivos de cabecera del marco en su código utilizando la directiva #include . Si está trabajando en Objective-C, puede usar la directiva #import en lugar de la directiva #include. Las dos directivas tienen los mismos resultados básicos. pero la directiva #import garantiza que el mismo archivo de encabezado nunca se incluya más de una vez. Hay dos maneras para incluir encabezados marco:

#include <Framework_name/Header_filename.h> 
#import <Framework_name/Header_filename.h> 

En ambos casos, Framework_name es el nombre de la estructura y Header_filename es el nombre de un archivo de cabecera en dicho marco o en una de sus subtramas.

Al incluir archivos de encabezado de marco, es tradicional incluir solo el archivo de encabezado de la estructura maestra. El archivo de encabezado maestro es el archivo de encabezado cuyo nombre coincide con el nombre del marco.Por ejemplo, el marco de la libreta de direcciones tiene un archivo de encabezado principal con el nombre AddressBook.h.

Para incluir marcos personalizados:

Si sus enlaces de proyectos a los marcos que no están incluidos en ninguna de las ubicaciones estándar, debe especificar explícitamente la ubicación de ese marco antes de Xcode puede localizar su archivos de encabezado Para especificar la ubicación de dicho marco, agregue el directorio que contiene el marco al “Framework Search Paths” option of your Xcode project. Xcode pasa esta lista de directorios al compilador y al enlazador , que usan la lista para buscar los recursos del marco.

Cuestiones relacionadas