Я успешно настроил и построил некоторые приложения Qt5 для Android, используя CMake и this утилита CMake.
Все работало нормально, пока я не переключился с Qt5.6 на Qt5.7. Когда я пытаюсь настроить, я получаю ошибку CMake, которая мне не очень помогает:
-- 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
Я запускаю CMake следующим образом:
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
Я могу воспроизвести это поведение с минимальной программой на С++:
#include <iostream>
int main() { std::cout << "hi" << std::endl; }
и минимальный CMakeLists.txt
:
cmake_minimum_required(VERSION 3.1)
find_package(Qt5Core)
add_executable(foo main.cpp)
target_link_libraries(foo Qt5::Core)
Линия, которая вводит эту ошибку, target_link_libraries(foo Qt5::Core)
- без нее программа настраивается и компилируется в порядке.
Вот некоторые вещи, которые я пробовал:
-
используйте разные уровни API NDK, установив
ANDROID_NATIVE_API_LEVEL
вandroid-8
,9
,16
,18
и некоторые другие значения, которые работали где-то еще (построение Qt5.7 автоматически используетandroid-16
) -
использовать разные релизы
NDK
(10е работало для меня с Qt5.6, ток 12) -
попробовал предварительно построенный Qt5.7, а не доморощенный от GitHub
До сих пор я просто сочетал разные версии SDK/NDK/Qt/NDK_API_LEVEL, но, честно говоря, я просто не знаю, что я делаю.
Вы можете мне помочь:
- расскажи мне, что я сделал неправильно (лучше!)
- уточните эту ошибку CMake, чтобы дать мне подсказку
- предоставит мне рабочий пример CMake/Android/Qt5.7, который я могу использовать для поиска проблемы