いさぽん部屋(isapon.com)

ゲーム系プログラマによる特に方針のないブログ。技術系とカレー、ラーメンネタ多めだったはずが、最近はダイエットネタ多め。

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の指定はいらなくなるのだろうけど、残っていても問題はないだろうなと。

NDK Roadmap

c++17も正式なものになったし、NDKもc++1z → C++17 になってくれるといいなー。