2009-01-14 9 views
12

Estoy trabajando en un proyecto que debe contener dos objetivos. Uno para construir un Framework para usar en el desarrollo de Mac y otro para crear una biblioteca estática para usar en el desarrollo de iPhone.¿Cómo se crean proyectos Xcode híbridos para Mac y iPhone?

En el código común no hay problema para #ifdef entre las plataformas, pero simplemente no puedo obtener los objetivos y las dependencias correctas.

La primera pregunta es, ¿qué SDK base usar? Por ejemplo, si uso Mac 10.5, no puedo incluir el marco UIKit (está marcado en rojo y no muestra los archivos del encabezado si lo amplío). Incluso si el objetivo que realmente se vincula contra él se construye para iPhone OS ...

La otra pregunta es, ¿qué hay de Foundation.framework, o cosas como Security.framework? Cómo lidiar con ellos, ya que solo puedo incluir una de las versiones (Mac o iPhone SDK) ...

¿Alguien tiene un consejo para mí? Me gustaría tener una estructura de proyecto limpia y definitivamente la misma base de código para ambos objetivos ... ¿Las configuraciones son el camino a seguir?

Gracias!

Respuesta

5

Sólo para hacerle saber:

Terminé tener un proyecto con diferentes objetivos para las diferentes plataformas. Pero no he incluido el marco dependo de sí mismo en las metas, sino que los añade a la Otras banderas Linker configuración de generación:

-framework Foundation -framework Security 

se puede comprobar a cabo en el proyecto que hice en github .

-3

¿No puedes usar el PIMPL idiom? ¿Y/o tener un encabezado común para ambos pero usar un archivo de implementación diferente basado en la arquitectura de destino o SDK?

3

Probablemente la manera más fácil (en términos de lo que tienes que hacer) de hacerlo son dos proyectos (que puedes resumir como subproyectos de un proyecto ficticio paraguas si quieres) que usan los mismos conjuntos de fuentes -una dirigida a Mac OS X, la otra iPhone OS.

Como alternativa, ¿no puede crear dos objetivos separados dentro del mismo proyecto y modificar el "SDK base" de la pestaña "Generar" de la ventana "Obtener información" para cada uno? No tengo Xcode frente a mí para verificar, pero creo que te dejará hacer esto.

(Por supuesto, con uno u otro enfoque, se puede añadir un tercer objetivo: una biblioteca estática para el simulador, que será útil para probar!)

+1

Ese es exactamente el problema. Tener dos objetivos con diferentes SDK Base donde uno es Mac OS X no me permitirá incluir el framework UIKit. Y también existe el problema con el marco de seguridad que tiene el mismo nombre en ambas plataformas. Pero la idea del "proyecto paraguas" podría estar bien. – stigi

3

En realidad no es tan malo. Simplemente cree un segundo objetivo del tipo apropiado y luego cambie la configuración de compilación "Base SDK". Luego asegúrese de agregar todos los archivos necesarios. Si desea compilar ambos al mismo tiempo, cree un objetivo agregado. Para un ejemplo práctico, vea mi proyecto SSPromise.

Cuestiones relacionadas