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 -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 ..
其中:
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
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