Я успешно настроил и создал несколько приложений Qt5 для Android с помощью CMake а также этот Утилита 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
Я могу воспроизвести это поведение с помощью минимальной программы на C ++:
#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)
— без него программа настраивает и компилирует нормально.
Вот несколько вещей, которые я попробовал:
использовать разные уровни NDK API, установив ANDROID_NATIVE_API_LEVEL
в android-8
, 9
, 16
, 18
и некоторые другие значения, которые работали где-то еще (сборка Qt5.7 автоматически использует android-16
)
использовать разные NDK
релизы (у меня 10e работало с Qt5.6, ток 12)
попробовал встроенный Qt5.7, а не самодельный из GitHub
До сих пор я просто комбинировал разные версии SDK / NDK / Qt / NDK_API_LEVEL, но, честно говоря, я просто не знаю, что я делаю ..
Вы могли бы помочь мне:
В качестве обходного пути (отсюда) вы можете закомментировать строку
set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)
в файле lib / cmake / Qt5Core / Qt5CoreConfigExtras.cmake
Я согласен, что сообщение не очень полезно, поэтому мой ответ не является предположением. Кажется, что cmake не может правильно определить вашу цепочку инструментов (GCC), и это связано с внутренними компонентами cmake, а не с вашим сценарием.
Я нашел связанный вопрос: "нет известных функций для CXX компилятора" при компиляции с MSVC ++ 2013
Кроме того, если вы воспользуетесь Google «Нет известных функций для компилятора CXX» cmake «, в результатах поиска появятся сообщения об ошибках для cmake.
Вы можете обновить версию cmake, если она доступна. Если проблема не устраняется, я предлагаю использовать список рассылки cmake-users или IRC-каналы для решения проблемы.
Используемая вами утилита CMake больше не актуальна для более новых версий Qt и Android-NDK.
Используя его, у меня возникла та же проблема, что и у вас, и я не смог заставить ее работать. Однако, заменив файл инструментария CMake, поставляемый Android NDK, я смог заставить все работать и компилировать по желанию.