在CMakeLists中设置ANDROID_STL 我正在编译Android Studio 2.2中的C++库代码。我遵循新的指南,将所有文件添加到我的项目中,并使用CMake(和CMakeLists.txt)编译它。我想使用C++14功能,以及原子、stoi等功能,但构建失败,出现了错误 error: no type named 'condition_variable' in namespace 'std' error: no member named 'stoi' in namespace 'std'
这就是我的CmakeList的样子(其他行设置源文件和其他内容):在CMakeLists中设置ANDROID_STL 我正在编译Android Studio 2.2中的C++库代码。我遵循新的指南,将所有文件添加到我的项目中,并使用CMake(和CMakeLists.txt)编译它。我想使用C++14功能,以及原子、stoi等功能,但构建失败,出现了错误 error: no type named 'condition_variable' in namespace 'std' error: no member named 'stoi' in namespace 'std',android,c++,android-ndk,cmake,Android,C++,Android Ndk,Cmake,这就是我的CmakeList的样子(其他行设置源文件和其他内容): 我在android页面()上找到了这篇文章,但我不知道在使用CMakeLists而不是ndk build时如何以及是否可以做到这一点。我看到了其他问题,使用 C++静态>强>运行时,但只使用NDK Bug .< /P> < P>用于生成Android原生库的交叉编译过程使用NDK库中的C++依赖关系。谷歌提供的NDK很好,它有很多东西,但是对C++11和C++14的支持并不完整 如果您想使用C++14功能,您可以使用其他NDK,
我在android页面()上找到了这篇文章,但我不知道在使用CMakeLists而不是ndk build时如何以及是否可以做到这一点。我看到了其他问题,使用<强> C++静态>强>运行时,但只使用NDK Bug .< /P> < P>用于生成Android原生库的交叉编译过程使用NDK库中的C++依赖关系。谷歌提供的NDK很好,它有很多东西,但是对C++11和C++14的支持并不完整 如果您想使用C++14功能,您可以使用其他NDK,例如。使用CrystaX,您还可以获得C++17支持。
- 这对于cmake情况更有用:
参数“-DANDROID\u STL=c++\u共享
- Gradle还将libc++_shared.so打包到APK中,当使用
时,绕过Gradle可能会给早期版本的Android操作系统上的应用程序带来麻烦c++_shared
在提出这个问题时,Android Studio可能会遇到问题;现在Android Studio 3.1.3应该可以了您是否尝试过按描述从gradle脚本设置它?您是否尝试按描述设置
CMAKE\u CXX\u标准
?
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})