¿Cómo crear ASSIMP Library para iOS (Device and Simulator) con boost-library?

Quiero usar la biblioteca ASSIMP http://assimp.sourceforge.net en un proyecto de iOS. Desafortunadamente, no tengo mucha experiencia con makefiles y eso, así que necesito ayuda.

He descargado las fonts y primero traté de comstackr con make (en la subcarpeta de códigos). En el makefile agregué INCLUDEFLAGS = -I/Lib porque mis encabezados de boost están en / Lib / boost Ejecutando make static succeeded con algunas advertencias Se genera una biblioteca estática (.a).

Luego intenté agregar el file .a a mi xcode-project y especificé la carpeta assimp-header como directory de inclusión adicional (Otras routes de búsqueda). La vinculación falló con el post de que la biblioteca no tiene la architecture adecuada (i386 requerida para el simulador)

file libassimp.a salidas: "libassimp.a: biblioteca arArchivo aleatorio actual"

¿Cómo puedo build la biblioteca para la architecture i386 y para arm6 o arm7, lo que necesito en un dispositivo iOS?

¿Está bien usar los encabezados de refuerzo solo o es mejor / necesario para boost el refuerzo como una biblioteca? Actualmente estoy usando encabezados boost solamente, lo que debería estar bien, ya que boost es una biblioteca exclusiva para encabezados ?!

También hay un cmake – makefile (CMakeLists.txt). cmake es la forma recomendada de build la biblioteca, pero no tengo experiencia con cmake.

O otro pensamiento: ¿Es posible build una biblioteca a través de xcode? El resultado final debería ser una biblioteca para la architecture i386, arm6 y arm7.

¿Qué debo hacer? ¿Y cómo?


Editar:

Acabo de descubrir que hay las siguientes comprobaciones de preprocesador en el file aiDefines.h :

 #if defined(_MSC_VER) // See http://msdn.microsoft.com/en-us/library/b0084kay. # if defined(_M_IX86) # define ASSIMP_BUILD_X86_32BIT_ARCHITECTURE # elif defined(_M_X64) # define ASSIMP_BUILD_X86_64BIT_ARCHITECTURE # elif defined(_M_IA64) # define ASSIMP_BUILD_IA_64BIT_ARCHITECTURE # else # error unknown architecture # endif #elif defined(__GNUC__) // See http://gcc.gnu.org/onlinedocs/cpp/Pnetworkingefined-Macros.html. # if defined(__x86_32__) || defined(__i386__) # define ASSIMP_BUILD_X86_32BIT_ARCHITECTURE # elif defined(__x86_64__) # define ASSIMP_BUILD_X86_64BIT_ARCHITECTURE # elif defined(__ppc__) # define ASSIMP_BUILD_PPC_32BIT_ARCHITECTURE # else # error unknown architecture # endif #else # error unknown compiler #endif 

¿Significa esto que no es posible comstackr la biblioteca ASSIMP para la architecture ARM?

Yo personalmente no hago ningún desarrollo de iOS, pero sé que otros han comstackdo exitosamente Assimp para sus iDevices usando Xcode. Un proyecto Xcode 3 debería includese en la distribución, aunque no sé si puede usarlo sin más modificaciones.

El preprocesador de architecture define actualmente solo se usa para registrar la salida (en code/Importer.cpp ), y el soporte para ARM se ha agregado al tronco mientras tanto (r919, para ser exactos).

También tuve algunos problemas para que assimp trabajara en dispositivos iOS.

Esto es lo que hice en caso de que alguien también tenga problemas similares, similar al ejemplo anterior de Artur Sampaio, pero con algunas diferencias:

  1. Obtén el último assimp de https://github.com/assimp/assimp , es decir, git clone git: //github.com/assimp/assimp.git

  2. cd en el directory assimp y abra CMakeLists.txt. Por alguna razón, el file make no pudo encontrar mis glut y gl libs, así que comenté las líneas en CMakeLists.txt que se referían a hacer las muestras, es decir, el bloque de código "IF (BUILD_ASSIMP_SAMPLES)". Probablemente hay una forma simple de señalarlos, pero como no necesité las muestras, simplemente comenté esas líneas.

  3. cd a puerto / iOS / y luego sudo ./build_ios.sh (se necesitan unos minutos para comstackr las 3 versiones de la lib).

  4. ahora si cd a assimp / lib / ios y lipo -info libassimp.a verá que la biblioteca es un file gordo con architectures i386, arm6 y arm7 (y funcionará tanto en el simulador como en el dispositivo arm6 o arm7).

  5. para que funcione en XCode 4.3.2, arrastre y suelte el file libassimp.a en mi proyecto (desde el buscador). No tiene que copyrlo en el directory de su proyecto, pero no duele si lo hace.

  6. por alguna razón, una compilation seguirá fallando a less que se vincule explícitamente a la biblioteca dinámica de libz. Haga clic en el proyecto principal de la list de files XCode, select TARGETS, luego click la pestaña Configuración de compilation, desplácese hacia abajo hasta la sección Vinculación y luego agregue "/usr/lib/libz.dylib" en "Otros indicadores de linkeres".

  7. la versión actual de assimp en github parece haber reestructurado un poco el código, y si bien todos los ejemplos que probé en el trabajo del website assimp, todos requieren files de encabezado diferentes o al less retitulados:

Aquí he comentado los nombres anteriores de los encabezados y debajo están los nombres nuevos:

 //#include <assimp.hpp> // C++ importer interface //#include <aiScene.h> // Output data structure //#include <aiPostProcess.h> // Post processing flags #include "Importer.hpp" #include "scene.h" #include "postprocess.h" 

Después de este punto, pude usar assimp en mi iPad.

Además, probablemente desee asegurarse de que ha desinstalado otras versiones de assimp antes de hacer esto (por ejemplo, de macports o brew).

Encontré una sucursal donde un chico ya había cambiado la configuration del proyecto para sus necesidades. https://github.com/blandinw/assimp/tree/ios-xcode46/doc

Lo que hice fue: download la versión 1090 del repository Assimp: http://assimp.svn.sourceforge.net/viewvc/assimp/trunk/?pathrev=1090

abrir la cremallera

cd ~ / Descargas / tronco / puerto / iOS

sudo ./build_ios.sh

(reemplace ~ / Descargas / troncal con la ruta a la carpeta descomprimida)

Espere…

compruebe libs en ~ / Downloads / trunk / libs / ios /

Espero que funcione