GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
ECM-TOOLCHAINS(7) Extra CMake Modules ECM-TOOLCHAINS(7)

ecm-toolchains - ECM Toolchains Reference

Extra CMake Modules (ECM) provides some toolchain modules. Unlike normal modules, these are not included directly in projects, but specified with the CMAKE_TOOLCHAIN_FILE cache variable on the commandline.

Enable easy compilation of cmake projects on Android.
By using this android toolchain, the projects will be set up to compile the specified project targeting an Android platform, depending on its input. Furthermore, if desired, an APK can be directly generated by using the androiddeployqt tool.
CMake upstream has Android support now. This module will still give us some useful features offering androiddeployqt integration and adequate executables format for our Android applications.
Since we are using CMake Android support, any information from CMake documentation still applies: https://cmake.org/cmake/help/v3.7/manual/cmake-toolchains.7.html#cross-compiling-for-android
NOTE:
This module requires CMake 3.7.


Since 1.7.0.

To use this file, you need to set the CMAKE_TOOLCHAIN_FILE to point to Android.cmake on the command line:
cmake -DCMAKE_TOOLCHAIN_FILE=/usr/share/ECM/toolchain/Android.cmake


You will also need to provide the locations of the Android NDK and SDK. This can be done on the commandline or with environment variables; in either case the variable names are:
CMAKE_ANDROID_NDK
The NDK root path.
ANDROID_SDK_ROOT
The SDK root path.

Additional options are specified as cache variables (eg: on the command line):
ANDROID_ABI
The ABI to use. See the sources/cxx-stl/gnu-libstdc++/*/libs directories in the NDK. Default: armeabi-v7a.
ANDROID_SDK_BUILD_TOOLS_REVISION
The build tools version to use. Default: 21.1.1.
ANDROID_EXTRA_LIBS
The “;”-separated list of full paths to libs to include in resulting APK.

For integrating other libraries which are not part of the Android toolchain, like Qt5, and installed to a separate prefix on the host system, the install prefixes of those libraries would be passed as alternative roots as list via ECM_ADDITIONAL_FIND_ROOT_PATH. Since 5.30.0.
For example, for integrating a Qt5 for Android with armv7 target present at /opt/android/Qt5/5.7/android_armv7 and some other libraries installed to the prefix /opt/android/foo, you would use:
cmake \
  -DCMAKE_TOOLCHAIN_FILE=/usr/share/ECM/toolchain/Android.cmake \
  -DECM_ADDITIONAL_FIND_ROOT_PATH="/opt/android/Qt5/5.7/android_armv7;/opt/android/foo"


If your project uses find_package() to locate build tools on the host system, make sure to pass CMAKE_FIND_ROOT_PATH_BOTH or NO_CMAKE_FIND_ROOT_PATH as argument in the call. See the find_package() documentation for more details.

After building the application, you will need to generate an APK that can be deployed to an Android device. This module integrates androiddeployqt support to help with this for Qt-based projects. To enable this, set the QTANDROID_EXPORTED_TARGET variable to the targets you wish to export as an APK (in a ;-separed list), as well as ANDROID_APK_DIR to a directory containing some basic information. This will create a create-apk-<target> target that will generate the APK file. See the Qt on Android deployment documentation for more information.
For example, you could do:
cmake \
  -DCMAKE_TOOLCHAIN_FILE=/usr/share/ECM/toolchain/Android.cmake \
  -DQTANDROID_EXPORTED_TARGET=myapp \
  -DANDROID_APK_DIR=myapp-apk
make
make create-apk-myapp


The APK would then be found in myapp_build_apk/bin in the build directory.
The create-apk-myapp target will be able to take an ARGS parameter with further arguments for androiddeployqt. For example, one can use:
make create-apk-myapp ARGS="--install"


To install the apk to test. To generate a signed apk, one can do it with the following syntax:
make create-apk-myapp ARGS="--sign ~/my.keystore alias_name"


In case it’s needed for your application to set the APK directory from cmake scripting you can also set the directory as the ANDROID_APK_DIR property of the create-apk-myapp target.
See Android documentation on how to create a keystore to use

ecm(7)

KDE Developers
January 1, 2019 5.53

Search for    or go to Top of page |  Section 7 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.