2012-02-28 10 views
10

Me gustaría utilizar la excelente biblioteca stringencoders en una aplicación de iOS. Es una biblioteca c bastante típica, con un script de configuración generado por autoconf y un archivo MAKE.Biblioteca c de código abierto de compilación cruzada para iOS y Xcode 4.3

Lo que me gustaría hacer es compilar las versiones arm7 e i386 en Mac OSX y luego usar lipo para hacer un binario gordo.

Tengo problemas para descubrir cómo convencer a las herramientas de compilación para que creen los archivos binarios específicos de la plataforma. Hay algunos artículos e incluso algunos scripts, pero la mayoría están dirigidos a XCode 4.2 y no funcionan con 4.3.

Parece que debería ser posible crear un script de compilación bastante genérico que pueda jugar muy bien con la configuración y la configuración, pero no entiendo por dónde empezar.

¿Has hecho algo como esto con éxito? Me encantaría algunos consejos!

BTW: 'importar todo el código fuente en su proyecto' NO es una solución viable. De esa manera yace la locura.

Gracias.

+0

sólo para ser explícita, lo conjunto de herramientas está buscando una solución para? Parece que está buscando una solución XCode 4.3, pero eso no está claro. –

+0

Gracias, he cambiado el título para aclarar – Darren

+0

A menos que no sepa qué es un compilador cruzado, esto suena como una configuración problema específico de Xcode 4.3. ¿Verdad? – Garen

Respuesta

3

He portado un puñado de bibliotecas C de código abierto para iOS (consulte iOS Ports). Descubrí que la forma más confiable de portar una biblioteca es crear un nuevo proyecto Xcode con un objetivo de compilación para una biblioteca iOS estática. Es importante tener en cuenta que Apple no permitirá que su aplicación iOS contenga bibliotecas dinámicas si planea distribuir su aplicación en la tienda de aplicaciones de iTunes, por lo que no podrá usar las bibliotecas FAT.

Estos son los pasos que suelen seguir al portar bibliotecas a IOS, que generalmente se construyen con GNU Autotools:

  1. Ejecutar ./configure con banderas correspondientes en OS X.
  2. Compruebe que la biblioteca se construye correctamente en OS X usando make.
  3. Cree un nuevo proyecto Xcode utilizando la plantilla Biblioteca estática de iOS.
  4. Agregue config.h desde la ejecución de configuración anterior al proyecto de Xcode.
  5. Lea el archivo automake (Makefile.am) y agregue las fuentes referenciadas en los objetivos del fabricante de automóviles al destino Xcode para la biblioteca estática.
  6. Copie los indicadores de CPP (es decir, -DHAVE_CONFIG_H) del archivo automake a la configuración de compilación en Xcode.
  7. Compila en Xcode y comienza a ejecutar errores (por lo general, al agregar rutas de inclusión de encabezado faltadas o archivos fuente faltantes).

La estructura de directorios que suelen utilizar es la siguiente:

project/ 
project/ported-project.xcodeproj 
project/project-x.x.x.tar.gz 
project/project-x.x.x 
project/project -> project-x.x.x 

Sé que esto no es exactamente lo que solicitó en su pregunta, sin embargo, es esbozo de los pasos que he usado para años para portar bibliotecas. El beneficio de crear un Xcode real para compilar la biblioteca portada es que facilita la integración de la biblioteca en múltiples aplicaciones Xcode iOS.

Si necesita alguna aclaración o instrucciones más detalladas, que me haga saber y yo "a tratar de redactar instrucciones más extensas y actualizar mi respuesta.

0

El objetivo C es un superconjunto de C, por lo que me sorprende que el código no haya funcionado directamente en XCode 4. ¿Se está perdiendo algo allí? simplemente sugiriendo

1

¿Es plausible agregar los archivos fuente (es decir, archivos .c) a su proyecto directamente?

Cuestiones relacionadas