android - 在 CMakeLists 中设置 ANDROID_STL

标签 android c++ android-ndk cmake

我正在 Android Studio 2.2 中编译 C++ 库代码。我遵循新指南,将所有文件添加到我的项目中并使用 CMake(和 CMakeLists.txt)进行编译,如 this 。我想使用 C++14 功能以及原子、stoi 等功能,但构建失败并出现错误。

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})

我在 android 页面 ( here ) 上找到了这篇文章,但我不知道在使用 CMakeLists 而不是 ndk-build 时如何以及是否可以做到这一点。我看到其他问题使用 c++_static 运行时解决它,但只能使用 ndk-build。

最佳答案

  • 这个documentation对于 cmake 情况会更有用: 参数“-DANDROID_STL=c++_shared
  • 当使用c++_shared时,Gradle 也会将 libc++_shared.so 打包到 APK 中;在早期版本的 Android 操作系统上绕过 Gradle 可能会给您的应用带来麻烦。

在提出这个问题时,Android Studio 可能遇到了麻烦;现在Android Studio 3.1.3,应该可以了

关于android - 在 CMakeLists 中设置 ANDROID_STL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064680/

相关文章:

未收到带有 Firebase 云消息传递的 Android 后台通知

c++ - 如何避免 Visual Studio 下的名称隐藏警告?

android - Android使用的c代码的open部分出现错误

Android - OpenCV 的替代品?

android - 如何只读取最后一行的 logcat?

Android Gradle - 在 gradle 中实现 Apache POI 时无法解决错误

php - Android php 连接错误? (+mysql)

c++ - 我可以使用 Qt 4.8.4 为 Windows 2000 进行部署吗?

c++ - 使用 std::cin >> 时可以丢弃返回字符吗?

android - Google Play 64位要求Gamemaker Studio