Android用のいくつかのQt5アプリケーションをCMakeを使用して正常に構成および構築しましたおよびthisCMakeユーティリティ。
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)
です。この行がないと、プログラムは正しく構成およびコンパイルされます。
これが私が試したいくつかのことです:
_Android_NATIVE_API_LEVEL
_を_Android-8
_、_9
_、_16
_、_18
_、および他の場所で機能する他のいくつかの値(Qt5.7を自動的に構築)に設定することにより、異なるNDK APIレベルを使用します_Android-16
_を使用)
異なるNDK
リリースを使用します(10eはQt5.6で私のために働きました、現在は12です)
gitHubからの自社開発ではなく、ビルド済みのQt5.7を試してみました
これまでは、SDK/NDK/Qt/NDK_API_LEVELの異なるバージョンを組み合わせただけでしたが、正直なところ、自分が何をしているかわかりません。
あなたは私を助けることができます:
回避策として( ここから )行をコメント化できます
set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)
lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmakeファイル内
私にとっての秘訣は、すべての構成ファイルと一時ビルドファイルをクリーンアップして、プロジェクトを強制的に再構成することでした。
.pro.user
および.cmake.user
ファイルメッセージはあまり役に立たないので、私の答えは推測ではありません。 cmakeがツールチェーン(GCC)を正しく検出できないようで、これはcmakeの内部に関連しており、必ずしもスクリプトに関連しているわけではありません。
関連する質問が見つかりました: MSVC++ 2013でコンパイルすると、「CXXコンパイラの既知の機能はありません」=
また、「CXXコンパイラの既知の機能はありません」cmakeをググると、検索結果にcmakeに関するバグレポートがいくつか表示されます。
あなたが試すことができるのは、cmakeバージョンが利用可能な場合、それを更新することです。問題が解決しない場合は、cmake-usersメーリングリストまたはIRCチャネルを使用して問題を解決することをお勧めします。
使用しているCMakeユーティリティは、新しいQtおよびAndroid-NDKバージョンでは最新ではありません。それを使用すると、私はあなたと同じ問題を抱えていて、それを機能させることができませんでした。ただし、Android NDKによって提供されるCMakeツールチェーンファイルを置き換えると、すべてを機能させ、希望どおりにコンパイルすることができます。