Build Assimp library for Android
首先各路教程中有推荐使用 NDK 或者 STANDALONE TOOLCHAIN 编译的,根据我的理解,这两种方式都是可以的,如果能直接使用 NDK 编译成功的话,就没有必要使用 STANDALONE TOOLCHAIN 了。
NDK build assmip library
cmake
cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN} -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=${NDK_PATH} \
-DANDROID_FORCE_ARM_BUILD=TRUE -DANDROID_STL=c++_shared -DANDROID_TOOLCHAIN=clang \
-DANDROID_NATIVE_API_LEVEL=21 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
-DCMAKE_INSTALL_PREFIX=/assimp -DCMAKE_BUILD_TYPE=Release \
-DASSIMP_BUILD_TESTS=OFF -GNinja ..
其中:
NDK_PATH=${ANDROID_HOME}/ndk-bundle/
CMAKE_TOOLCHAIN=${ANDROID_HOME}/ndk-bundle/build/cmake/android.toolchain.cmake
注意其中的 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
, 此处遇到问题是 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