2009-10-29 25 views
26

Estoy creando una lib estática en Mac OS X para uno de nuestros clientes, así como una pequeña aplicación de línea cmd para probar la lib estática. El proyecto de línea cmd tiene 2 rutas de búsqueda de biblioteca adicionales, lo que significaba que estaba enlazando a la versión de Debug en modo Release y casi me volví loco, así que traté de deshacerme de estas dos rutas, pero no pude encontrar dónde se especificaron . Estaba buscando en la información del proyecto, pero resultó que estaban especificados en la información del objetivo.Xcode: configuración del proyecto frente a la configuración de destino

No entiendo la distinción ?! ¿Por qué hay 2 conjuntos de configuraciones, que son esencialmente lo mismo? ¿Alguien puede por favor iluminarme?

Respuesta

39

Un proyecto puede contener objetivos múltiples. Por ejemplo, una aplicación que escribo tiene cuatro: la aplicación en sí, un complemento Quick Look, un marco y un paquete que contiene la funcionalidad específica de Mac OS 10.6 que se puede cargar dinámicamente.

La configuración del proyecto se aplica a cada objetivo individual en el proyecto. Cada objetivo puede anular la configuración individual si es necesario; por ejemplo, el SDK de destino de mi proyecto se establece en 10.5, pero el paquete específico de 10.6 tiene su SDK de destino configurado en 10.6.

En algunos casos, algunas configuraciones no tienen sentido para estar en la Configuración del proyecto; una de estas, supongo, son las rutas de búsqueda.

+0

Pregunta del corolario: ¿Cómo se supone que debo incluir la biblioteca estática en el proyecto de la aplicación de línea de cmd? ¿Arrastrando y soltando en la lista de archivos fuente? ¿O desde la configuración de compilación? – vectorizor

+4

@iKenndac, ¿puedes explicar por qué "algunas configuraciones no tienen sentido para estar en Configuración del proyecto"? Solo tengo un objetivo en cada proyecto y todavía estoy confundido sobre la configuración de las rutas de búsqueda. – topace

8

A menudo tiene objetivos múltiples en un solo proyecto; por ejemplo, puede tener un proyecto de infraestructura con un objetivo para construir como un paquete dinámico de marcos y un objetivo para construir una lib estática. O su aplicación podría tener un objetivo para construir la aplicación en sí, y un objetivo para construir alguna herramienta de línea de comandos auxiliar que necesite instalar.

Siempre que sea posible, sugiero cambiar las configuraciones al más alto nivel (en la configuración del proyecto y al mismo tiempo cambiar las configuraciones de versión de depuración &), y personalizar solo las configuraciones de destino cuando sea necesario. Mejor aún, mueva tantos ajustes como sea posible en archivos xcconfig, que parecen una forma mucho más explícita de especificar su configuración de compilación.

Cuestiones relacionadas