настроить приложение Qt5 5.7 для Android с CMake

Я успешно настроил и создал несколько приложений 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, но, честно говоря, я просто не знаю, что я делаю ..

Вы могли бы помочь мне:

  • говорит мне, что я сделал не так (лучше всего!)
  • подробно об этой ошибке CMake, чтобы дать мне подсказку
  • предоставьте мне рабочий пример CMake / Android / Qt5.7, который я могу использовать сам, чтобы найти проблему

15

Решение

В качестве обходного пути (отсюда) вы можете закомментировать строку

set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)

в файле lib / cmake / Qt5Core / Qt5CoreConfigExtras.cmake

11

Другие решения

Я согласен, что сообщение не очень полезно, поэтому мой ответ не является предположением. Кажется, что cmake не может правильно определить вашу цепочку инструментов (GCC), и это связано с внутренними компонентами cmake, а не с вашим сценарием.

Я нашел связанный вопрос: "нет известных функций для CXX компилятора" при компиляции с MSVC ++ 2013

Кроме того, если вы воспользуетесь Google «Нет известных функций для компилятора CXX» cmake «, в результатах поиска появятся сообщения об ошибках для cmake.

Вы можете обновить версию cmake, если она доступна. Если проблема не устраняется, я предлагаю использовать список рассылки cmake-users или IRC-каналы для решения проблемы.

0

Используемая вами утилита CMake больше не актуальна для более новых версий Qt и Android-NDK.
Используя его, у меня возникла та же проблема, что и у вас, и я не смог заставить ее работать. Однако, заменив файл инструментария CMake, поставляемый Android NDK, я смог заставить все работать и компилировать по желанию.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector