2017-02-06 9 views
2

私はAndroidスタジオ2.2でC++ライブラリコードをコンパイルしています。私は私のプロジェクトにすべてのファイルを追加し、thisのようなCMake(とCMakeLists.txt)を使ってコンパイルする新しいガイドに従います。 C++ 14の機能を使用したいですが、アトミック、stoiなどのようなものですが、ビルはエラーで失敗しています。CMakeListsにANDROID_STLを設定してください

error: no type named 'condition_variable' in namespace 'std' 
error: no member named 'stoi' in namespace 'std' 

これは(他の行は、ソースファイルや他のものを設定する)ように見えるものに私CMakeListsです:

find_library(GLES GLESv2) 
include_directories(${COMMON_PATH} /usr/local/include) 
set(ANDROID_STL "c++_shared") 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -latomic") 

add_library(native-lib SHARED ${COMMON_SRC}) 
target_link_libraries(native-lib ${GLES}) 

私はアンドロイドのページ(here)この記事を見つけましたが、私は知りませんどうやってCMakeListsを使ってndk-buildを使うのではないかと思っています。 C++ _ staticランタイムを使用して解決する他の質問が表示されますが、ndk-buildのみで実行されます。

+1

[here](https://developer.android.com/ndk/guides/cmake.html)に記載されているように、gradleスクリプトから設定しようとしましたか? – Michael

+0

[CMAKE_CXX_STANDARD]を[ここ](http://stackoverflow.com/questions/38132793/how-to-control-compiler-flag-invoked-when-specifing-cmake-cxx-standard)に記載されているように設定しようとしましたか? – Florian

答えて

0

Androidのネイティブライブラリを生成するために使用されるクロスコンパイルプロセスは、NDKライブラリのC++依存関係を使用します。 Googleによって提供されたNDKは良いものであり、多くのことがありますが、C++ 11とC++ 14のサポートは完全ではありません。

C++ 14の機能を使用する場合は、たとえばのような他のNDKを使用できます。 CrystaXではC++ 17のサポートもあります。

関連する問題