通过编译配置选项裁剪编译,只编自己需要的部分,如本文:Exporter 全不需要,Importer 只编进来 Obj 和 FBX 格式。
配置选项说明:
- -DBUILD_SHARED_LIBS=OFF 关掉动态库,即编译静态库
- -DASSIMP_NO_EXPORT=ON 关闭所有的 Exporter(不需要导出模型)
- -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=FALSE 关闭编译所有的默认 Importer,即不全部编译
- -DASSIMP_BUILD_OBJ_IMPORTER=TRUE 编译 Obj 格式的 Importer
- -DASSIMP_BUILD_FBX_IMPORTER=TRUE 编译 FBX 格式的 Importer
编译截图:
编译脚本如下:
#!/bin/sh
MY_NDK="/Users/AlanWang4523/AndroidDev/android-ndk-r16b"
MY_SDK="/Users/AlanWang4523/AndroidDev/sdk"
MY_CMAKE="${MY_SDK}/cmake/3.10.2.4988404/bin/cmake"
OUTPUT_LIBS="./build/libs/android"
function build_with_armeabi() {
ARME_ABI=$1
API_LEVEL=$2
PLATFORM="android-${API_LEVEL}"
echo ${ARME_ABI}
echo ${PLATFORM}
BUILD_DIR="./build/android/${ARME_ABI}"
PRE_EXE_DIR=$(pwd)
echo ${PRE_EXE_DIR}
# 使用 android 工具链生成 makefile
${MY_CMAKE} \
-H"./" \
-B"${BUILD_DIR}" \
-DBUILD_SHARED_LIBS=OFF \
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF \
-DASSIMP_BUILD_TESTS=OFF \
-DASSIMP_INSTALL=OFF \
-DASSIMP_INJECT_DEBUG_POSTFIX=OFF \
-DASSIMP_NO_EXPORT=ON \
-DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=FALSE \
-DASSIMP_BUILD_OBJ_IMPORTER=TRUE \
-DASSIMP_BUILD_FBX_IMPORTER=TRUE \
-DANDROID_ABI="${ARME_ABI}" \
-DANDROID_NDK="${MY_NDK}" \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY="./build/android/libs/${ARME_ABI}" \
-DCMAKE_BUILD_TYPE="Release" \
-DCMAKE_TOOLCHAIN_FILE="${MY_NDK}/build/cmake/android.toolchain.cmake" \
-DANDROID_PLATFORM=${PLATFORM} \
-DANDROID_TOOLCHAIN="clang" \
-DCMAKE_C_FLAGS="-fpic -fexceptions -frtti" \
-DCMAKE_CXX_FLAGS="-fpic -fexceptions -frtti" \
-DANDROID_STL="c++_static" \
# 生成目标文件
cd ${BUILD_DIR}
make
# 将目标文件移至指定目录
cd ${PRE_EXE_DIR}
mkdir -p ${OUTPUT_LIBS}/${ARME_ABI}/
cp ${BUILD_DIR}/lib/* ${OUTPUT_LIBS}/${ARME_ABI}/
rm -r ./build/android
}
build_with_armeabi armeabi-v7a 16
build_with_armeabi arm64-v8a 21