Gradle + NDK で APP_STL を指定する(Android Studio)
NDK r16 にて自作ライブラリをc++17向けにいろいろと拡張をして遊んでいたところ、 std::get_time() を呼び出したらんなもん無いと怒られたのでいろいろ調べてみた。
結果は build.gradle に arguments "-DANDROID_STL=c++_shared" を追加すればよいということらしい。
こんな感じになるはず。
externalNativeBuild { cmake { cppFlags "-std=c++1z -frtti -fexceptions arguments "-DANDROID_STL=c++_shared } }
NDK の公式ブログの NDK r16 のブログ記事に書いてありました。
android-developers.googleblog.com
NDK のロードマップを読むと、r18では GCCが削除になる予定だし、いずれ ANDROID_STLの指定はいらなくなるのだろうけど、残っていても問題はないだろうなと。
c++17も正式なものになったし、NDKもc++1z → C++17 になってくれるといいなー。