Build Assimp library for Android

Build Assimp library for Android

首先各路教程中有推荐使用 NDK 或者 STANDALONE TOOLCHAIN 编译的,根据我的理解,这两种方式都是可以的,如果能直接使用 NDK 编译成功的话,就没有必要使用 STANDALONE TOOLCHAIN 了。

NDK build assmip library

cmake

export ANDROID_CMAKE_TOOLCHAIN=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake
cmake -DCMAKE_TOOLCHAIN_FILE=${ANDROID_CMAKE_TOOLCHAIN} \
    -DCMAKE_SYSTEM_NAME=Android -DANDROID_ABI=arm64-v8a \
    -DANDROID_STL=c++_shared -DANDROID_TOOLCHAIN=clang -DANDROID_NATIVE_API_LEVEL=23 \
    -DCMAKE_BUILD_TYPE=Release \
    -DASSIMP_BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=FALSE -DASSIMP_NO_EXPORT=TRUE \
    -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=FALSE -DASSIMP_BUILD_FBX_IMPORTER=TRUE  -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \
    -DCMAKE_INSTALL_PREFIX=./install \
    -DCMAKE_MAKE_PROGRAM=ninja -GNinja ..

注意其中的 ASSIMP_BUILD_TESTS 一定要设置关闭,否则编译失败,报一个 pthread 的链接错误。

cmake 执行后会有一些 warnning 可以不用解决。

-- Could NOT find rt (missing: RT_LIBRARY) 
INFO RT-extension not found. glTF import/export will be built without Open3DGC-compression.

make

然后执行

ninja
ninja install

Update:

下述问题不再出现

此处遇到问题是 error: unknown type name 'z_crc_t' 直接找到对应的源文件,添加声明即可。

typedef unsigned long z_crc_t;

Use lib

将动态库和头文件加入工程即可使用,记得将 cmake build 目录下的 include/assimp/config.h 拷贝到所用的工程的 include 目录下。

参考

https://wxdut.com/15271715037538.html

CMake

Windows环境下编译Assimp库生成Android可用的.so文件

Android compilation on Windows

posted @ 2018-11-05 14:59  皮斯卡略夫  阅读(1713)  评论(0编辑  收藏  举报