configure a Qt5 5.7 application for Android with CMake

Issue

I’ve successfully configured and built some Qt5 applications for Android using CMake and this CMake utility.

Everything worked fine until I switched from Qt5.6 to Qt5.7. When I try to configure I get an CMake error which doesn’t help me much:

-- Configuring done
CMake Error in CMakeLists.txt:
  No known features for CXX compiler

  "GNU"

  version 4.9.

-- Generating done
-- Build files have been written to: /path/to/build-dir

I run CMake like this:

ANDROID_SDK/path/to/android-sdk-linux \
ANDROID_NDK/path/to/android-ndk-r12 \
QT_ANDROID_ROOT/path/to/Qt-5.7.0-android \
JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk \
ANT/usr/bin/ant \
cmake /path/to/CMakeLists.txt \
      -DCMAKE_PREFIX_PATH$QT_ANDROID_ROOT \
      -DCMAKE_TOOLCHAIN_FILE/path/to/android.toolchain.cmake

I can reproduce this behavior with a minimal C++ program:

#include <iostream>
int main() { std::cout << "hi" << std::endl; }

and a minimal CMakeLists.txt:

cmake_minimum_required(VERSION 3.1)
find_package(Qt5Core)
add_executable(foo main.cpp)
target_link_libraries(foo Qt5::Core)

The line that introduces this error is target_link_libraries(foo Qt5::Core) – without it the program configures and compiles fine.

Here are some things I tried:

  • use different NDK API levels by setting ANDROID_NATIVE_API_LEVEL to android-8, 9, 16, 18 and some other values that worked somwhere else (building Qt5.7 automatically uses android-16)

  • use different NDK releases (10e worked for me with Qt5.6, current is 12)

  • tried prebuilt Qt5.7 rather than home-grown from GitHub

Until now I just combined different versions of SDK/NDK/Qt/NDK_API_LEVEL but honestly I just don’t know what I’m doing..

You could help me by:

  • telling me what I’ve done wrong (best!)
  • elaborate on that CMake error to give me a hint
  • provide me with a working CMake/Android/Qt5.7 example which I can use myself to find the problem

Solution

As a workaround (from here) you can comment out the line

set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)

in lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake file

Answered By – cdovgal

Leave a Comment