如何使用boost-library为iOS(设备和模拟器)构buildASSIMP库?

我想在iOS项目中使用ASSIMP库http://assimp.sourceforge.net 。 不幸的是,我并不是很熟悉makefile和那些东西,所以我需要一些帮助。

我已经下载了源代码,并且首先尝试使用make(在代码子文件夹中)构build在makefile中,我添加了INCLUDEFLAGS = -I/Lib因为我的boost头文件位于/ Lib / boost执行make static成功有一些警告。 生成一个静态库(.a)。

然后,我尝试将.a文件添加到我的xcode-project中,并将assimp头文件夹指定为其他包含目录(其他searchpath)。 链接失败的消息,该图书馆没有正确的架构(模拟器所需的i386)

file libassimp.a输出:“libassimp.a:当前ar档案随机库”

无论我需要在iOS设备上如何构buildi386结构库和arm6或arm7库?

可以只使用boost-headers,还是更好/有必要把boost作为一个库? 目前我只使用boost头文件,这应该是好的,因为boost是一个头文件库?!

还有一个cmake – makefile(CMakeLists.txt)。 cmake是build立图书馆的推荐方式,但是我对cmake没有任何经验。

或者另一个想法:是否有可能通过xcodebuild立一个图书馆? 最终的结果应该是i386,arm6和arm7架构的库。

我该怎么办? 如何?


编辑:

我刚刚发现在文件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/Predefined-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 

这是否意味着,不可能为ARM架构编译ASSIMP库?

我个人不做任何iOS开发,但是我知道其他人已经使用Xcode成功编译了他们的iDevices的Assimp。 Xcode 3项目应该包含在发行版中,但是我不知道你是否可以使用它,而不需要进一步的修改。

架构预处理器定义目前仅用于日志logging输出(在code/Importer.cpp ),同时还支持ARM(r919,准确地说)。

我也有一些问题在iOS设备上运行。

以下是我所做的,以防万一任何人也有类似的问题 – 类似于上面的Artur Sampaio的例子,但有一些不同之处:

  1. https://github.com/assimp/assimp获取最新的assimp,即git clone git://github.com/assimp/assimp.git

  2. cd进入assimp目录并打开CMakeLists.txt。 出于某种原因,make文件找不到我的glut和gl库文件,所以我在CMakeLists.txt中提到了制作示例的行,即“IF(BUILD_ASSIMP_SAMPLES)”代码块。 有可能是一个简单的方法来指出这些,但因为我不需要我刚才做的样品评论这些线。

  3. cd到port / iOS /然后sudo ./build_ios.sh(编译lib的所有3个版本需要几分钟的时间)。

  4. 现在如果你cd到assimp / lib / ios和lipo -info libassimp.a你将会看到这个库是一个带有i386,arm6和arm7体系结构的胖文件(并且可以在模拟器和arm6或者arm7设备上工作)。

  5. 为了使它在XCode 4.3.2中工作,将libassimp.a文件拖放到我的项目中(从查找器中)。 你不必真的把它复制到你的项目目录下,但是如果你这样做不会伤害到它。

  6. 出于某种原因,构build仍然会失败,除非你明确地链接到libzdynamic库。 从XCode文件列表中select主项目,selectTARGETS,然后点击Build Settings选项卡,向下滚动到Linking部分,然后在“Other Linker Flags”下添加“/usr/lib/libz.dylib”。

  7. 目前github上的assimp版本似乎已经对代码进行了一些重构,尽pipe我在assimp网站上testing过的所有例子都需要不同的,或者至less重命名的头文件:

在这里,我已经注释了以前的标题名称,下面是新名称:

 //#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" 

在这之后,我可以在我的iPad上使用assimp。

此外,你可能想要确保你已经卸载了其他版本的assimp之前(例如从macports或酿造)。

我发现一个人已经改变了你的需求项目设置的分支。 https://github.com/blandinw/assimp/tree/ios-xcode46/doc

我所做的是:下载版本1090的Assimp回购: http ://assimp.svn.sourceforge.net/viewvc/assimp/trunk/ ? pathrev=1090

拉开拉链

cd〜/ Downloads / trunk / port / iOS

sudo ./build_ios.sh

(将〜/ Downloads / trunkreplace为解压缩文件夹的path)

等待…

在〜/ Downloads / trunk / libs / ios /

希望工程