【发布时间】:2017-04-10 08:41:47
【问题描述】:
我想在我的 Android 应用程序的 C++ 代码中使用可选项,但我无法弄清楚如何配置 STL 以支持 std::experimental::optional 或 std::optional。如果我只是将“-lc++experimental”添加到 cppFlags,则会出现构建失败,“找不到 -lc++experimental”。这就是我的 Gradle 文件的 externalNativeBuild 部分目前的样子。
externalNativeBuild {
cmake {
arguments "-DANDROID_STL=c++_shared"
cppFlags "-std=c++11", "-frtti", "-fexceptions"
}
}
如何启用 std::optional 或 std::experimental::optional 的使用?
编辑:我能够下载 boost 并改用 boost::optional ,这很容易,因为它是一个仅限标头的库。尽管如此,如果可能的话,知道如何使用 NDK 附带的一种 STL 还是很不错的。当我打开 $ANDROID_NDK_HOME/sources/cxx-stl/llvm-libc++/include/experimental/optional 时,我看到看起来像是 std::experimental::optional 的实现,但它被很多预处理器语句包围,我想象一下正在禁用它。
【问题讨论】:
-
你的实现是否已经实现了?