Archive 17/01/2023.

How to set compiler flags for building Urho3D (Android Build)

projector

I’m not familiar with Cmake, how do we set the compiler flags for building Urho3D or Urho3D android projects? I’ve tried modifying CMakeLists.txt by adding set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -O3”) and add_definitions("-O3"), it does not seem to be working.

rku

You can use cmake_android.sh or cmake_android.bat (main Urho3D folder). Or you can invoke command manually:

cmake -DCMAKE_TOOLCHAIN_FILE=Urho3D/CMake/Toolchains/Android.cmake -DANDROID=1 -DANDROID_NATIVE_API_LEVEL=android-21 -DANDROID_ABI=armeabi

Make sure you have two environment variables pointing to android SDK and NDK:

ANDROID_NDK=/path/to/android-ndk-r13b
ANDROID_SDK=/path/to/android-sdk-linux

Now i do not remember for sure but PATH environment variable might need /path/to/android-sdk-linux/platform-tools.

More info in docs.

projector

Thank you for your response. Just to clarify, How if I want to set the compiler’s level of optimisation(for exp, set to -O3)? could I just append -O3 at the end of the command?

rku

You may use -DCMAKE_BUILD_TYPE=Release in case you want a release build. To set specific flags you should add set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") (and maybe set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") for C code) in appropriate place.

projector

Thanks a lot for your help, it’s very helpful. What is the default CPU optimization level for Release mode for Urho3D Android build?

weitjong

Release build configuration uses -O3.

projector

ok, thanks! If this is the case i just need to use “-DCMAKE_BUILD_TYPE=Release”

weitjong

Actually Release is the default.