Ogre编译环境所需配置:
1、Android NDK版本16
2、Android Stuido 3.3
3、Java版本jdk1.8.0_131
4、CMake 3.16.0-rc3
5、Python2.7.13
4、swigwin-3.0.8 Ogre自动生成Java接口需要。
把以上的sdk安装好后,需要在环境变量中配置一下,理论上以上版本不限定。
Ogre下载地址:https://github.com/OGRECave/ogre.git 作者每天在更新。在Ogre的当前目录中创建一个build_android.bat 文件,文件的编译的配置如下:
cmake -E make_directory "build/" && cd build/ && cmake -DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake" -DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%/prebuilt/windows-x86_64/bin/make.exe" -DANDROID_STL="c++_static" -DANDROID_ABI="armeabi-v7a" -G "Unix Makefiles" -DANDROID=TRUE -DANDROID_PLATFORM=android-18 -DANDROID_NATIVE_API_LEVEL=18 -DANDROID_TOOLCHAIN=clang -DCMAKE_CONFIGURATION_TYPES=Release -DOGRE_BUILD_COMPONENT_OVERLAY_IMGUI=OFF -DOGRE_BUILD_SAMPLER_DEMO=TRUE -DOGRE_BUILD_ANDROID_JNI_SAMPLE=TRUE -DOGRE_DEPENDENCIES_DIR="../AndroidDependencies" ..
cmake --build ./
cd ..
pause
创建一个build目录并且cd进入build目录下,用来存放编译文件。
cmake -E make_directory "build/" && cd build/
指定Android NDK中的cmake,%ANDROID_NDK%需要在环境变量中配置NDK的路径。
-DCMAKE_TOOLCHAIN_FILE="%ANDROID_NDK%\build\cmake\android.toolchain.cmake"
-DCMAKE_MAKE_PROGRAM="%ANDROID_NDK%/prebuilt/windows-x86_64/bin/make.exe"
编译选项的设定,设置NDK的编译版本,Android宏定义,编译器使用clang等等。
-DANDROID_STL="c++_static" -DANDROID_ABI="armeabi-v7a" -G "Unix Makefiles" -DANDROID=TRUE
-DANDROID_PLATFORM=android-18 -DANDROID_NATIVE_API_LEVEL=18 -DANDROID_TOOLCHAIN=clang
-DCMAKE_CONFIGURATION_TYPES=Release
该版去掉了IMGUI部分代码所以需要关闭掉,不然会报错。
-DOGRE_BUILD_COMPONENT_OVERLAY_IMGUI=OFF
设置编译生成Android Demo,好像这里设定起不了作用。
-DOGRE_BUILD_SAMPLER_DEMO=TRUE -DOGRE_BUILD_ANDROID_JNI_SAMPLE=TRUE
需要修改Ogre的CMakeList.txt,把FALSE设置为TRUE
指定编译好的依赖库libFreeImage.a libfreetype.a libOIS.a等等,末尾中的..是指向Ogre根目录下的CMakeList.txt路径,例如:cd build/xxx ,则使用../../往上跳两级目录才能到达Ogre的根目录代码中,我们这里只使用了一层目录就能指定Ogre CMakeList。
-DOGRE_DEPENDENCIES_DIR="../AndroidDependencies" ..
开始编译.....
cmake --build ./
需要修改2处地方:
1、在PlugIns/DotScene/CMakeLists.txt 需要对libpugixml.a 指定路径否则编译错误,还需要把pugiconfig.hpp,pugixml.hpp拷贝到PlugIns\DotScene\include下。
2、在Ogre 目录下需要在CMake/Utils/PrecompiledHeader.cmake 该行需要注释掉否则编译会报错。
执行build_android.bat,如果编译不通过请使用Visual Studio 编译器自带的VS2015 x64控制台。
build的目录下生成一个OgreJNI工程,可以用android studio 3.4打开。
编译好的工程:https://github.com/octopus888/android_ogre1.12.6.git 目录下OgreJNI_3.3可以使用android studio 3.3打开。