LoginSignup
1
0

More than 3 years have passed since last update.

Android NDK + C++14 設定 cmake で no member named `make_unique` in namespace `std` エラーなどが出る

Posted at

背景

C++14 を要求されるコードを

set(CMAKE_CXX_STANDARD 14)

と設定しても,

no member named `make_unique` in namespace `std`

などで, make_unique 周りでコンパイルがこける.

原因

たぶんなにか他の add_subdirectory などで追加している third party library が, CXX flags に直接 -std=c++11 など他の C++ バージョンを指定してしまっている可能性が高いです.

CMAKE_MAKEFILE_VERBOSE=On を cmake bootstrap に追加するなどして, コマンドラインで適切に C++14 モードになっているか確認してみましょう.

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

として, 厳格に -std=c++14 でコンパイルするようにするとよいかもしれません.

call to 'make_unique' is ambiguous エラー

spdlog を Android + C++14 でビルドするときに発生しました.

なにか他の Android ヘッダと定義がかちあっているようです.
先に spdlog のヘッダをインクルードするようにすると解決しました.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0