【发布时间】:2011-10-05 05:40:36
【问题描述】:
我想在 iOS 项目中使用 ASSIMP 库 http://assimp.sourceforge.net。不幸的是,我对 makefile 和那些东西不是很有经验,所以我需要一些帮助。
我已经下载了源代码,首先我尝试使用 make 构建(在代码子文件夹中)
在makefile中我添加了INCLUDEFLAGS = -I/Lib,因为我的boost头文件在/Lib/boost
执行 make static 成功并出现一些警告。生成一个静态库 (.a)。
然后我尝试将 .a 文件添加到我的 xcode-project 并将 assimp-header 文件夹指定为附加包含目录(其他搜索路径)。链接失败,提示库没有正确的架构(模拟器需要 i386)
file libassimp.a 输出:“libassimp.a:当前 ar 存档随机库”
如何在 iOS 设备上为 i386 架构和 arm6 或 arm7 构建库?
可以只使用 boost-headers 还是将 boost 构建为库更好/必要?目前我只使用 boost 标头,这应该没问题,因为 boost 是一个仅标头的库?!
还有一个 cmake - makefile (CMakeLists.txt)。 cmake 是构建库的推荐方式,但我对 cmake 没有任何经验。
或者另一个想法:是否可以通过 xcode 构建库? 最终结果应该是针对 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 库?
【问题讨论】:
-
我能够使用 Developer/Platforms/iPhoneSimulator.platform/Developer 成功构建 i386 架构,但它不适用于使用 iPhone.platform SDK 的 arm 架构;它在上述预处理器检查“错误未知架构”时失败