【问题标题】:Error: no member named 'to_string' in namespace 'std'; did you mean 'toString'? Gradle+Cmake错误:命名空间“std”中没有名为“to_string”的成员;你是说'toString'吗? Gradle+Cmake
【发布时间】:2017-01-12 00:11:10
【问题描述】:
<string> 包括在内。 std::to_sting(intVar) 有什么问题?
cppreference。这是否意味着 CLang 不符合 STandarD?
Another question 有帮助,但答案不好(对我来说) 因为:
- 编写自己的 std::to_string() 是个坏主意。标准就是标准。如果我编写自己的实现。我需要用定义包装它,以防止来自其他不泄漏标准特性的编译器/工具链的错误。而且这个 impl 仍然会泄露全功能的 STD。
-
Application.mk - 也是个坏主意,因为最新的工作室提供 Gradle+CMake。 Makefile 太丑陋,难以手动使用。
- 我的solution 更好。
【问题讨论】:
标签:
gradle
android-ndk
android-gradle-plugin
clang
android-sdk-2.3
【解决方案1】:
这是否意味着 CLang 不符合 STandarD?
不是,这是因为 Android NDK 默认设置了最小标准库。
我使用 gradle 构建系统:
android {
...
defaultConfig {
...
// This block is different from the one you use to link Gradle
// to your CMake build script.
externalNativeBuild {
cmake {
...
// Use the following syntax when passing arguments to variables:
// arguments "-DVAR_NAME=VALUE"
// ------------------- ANSWER -------------------
arguments "-DANDROID_STL=c++_shared"
}
}
}
buildTypes {...}
// Use this block to link Gradle to your CMake build script.
externalNativeBuild {
cmake {...}
}
}
阅读这些:
https://developer.android.com/ndk/guides/cmake.html#variables
https://developer.android.com/ndk/guides/cpp-support.htm