Android 找不到参数的方法cppFlags()arguments()
我正在尝试使用Android 找不到参数的方法cppFlags()arguments(),android,c++,cmake,android-ndk,ndk-build,Android,C++,Cmake,Android Ndk,Ndk Build,我正在尝试使用 std::function 但是编译器抛出了一个错误 Error:(50, 10) error: no type named 'function' in namespace 'std' 我已尝试修改build.gradle文件 externalNativeBuild { ndkBuild { path "src/main/jni/Android.mk" } cmake { cppFlags "-std=c++11"
std::function
但是编译器抛出了一个错误
Error:(50, 10) error: no type named 'function' in namespace 'std'
我已尝试修改build.gradle文件
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"
}
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
path 'src/main/jni/CMakeLists.txt'
}
}
但它不接受除path
之外的参数,并抛出以下错误
Error:(28, 0) Could not find method arguments() for arguments [-DANDROID_STL=gnustl_static] on object of type com.android.build.gradle.internal.dsl.CmakeOptions.
请帮助我能够使用
std::function
更新
多亏了@alexcohn,我才能够配置标志和参数,现在我的文件看起来就是这样
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
/* ndkBuild {
path "src/main/jni/Android.mk"
}*/
cmake {
// cppFlags "-std=c++11"
//arguments "-DANDROID_STL=gnustl_static"
path 'src/main/jni/CMakeLists.txt'
}
}
}
dependencies {
compile 'com.android.support:support-annotations:25.0.1'
}
build.gradle中有两个完全不同的块名为externalNativeBuild(谢谢,谷歌) 位于android顶级块下,它指定本机构建脚本的路径,cmake或ndkBuild(但不是两者都指定) 可以使用从gradle为本机生成指定一些参数。此块通常是defaultConfig块的子块,但也可以出现在flavors中(请参阅) 这些externalNativeBuild块也可以有cmake或ndkBuild子级,但只有与路径设置(见上文)匹配的子级才相关,另一个子级则被默默忽略
底线是,将块一分为二,并将每个块放在build.gradle层次结构中的正确位置。您是否有
\include
到您的cpp源代码中?您可以进一步将-DCMAKE\u CXX\u STANDARD=11
添加到您的参数设置中。@vre,是的,我尝试过,添加参数不起作用,它根本不接受任何参数,我可以在CMAke文件本身中设置这些参数吗?顺便说一句,参数行末尾有一个多余的逗号。我想这会妨碍其他选择被认可。您只在分隔不同的参数时使用逗号。@vre,您是对的,但这只是一个输入错误,我在插入代码时意外地键入了它,这是非常有价值的信息!!谢谢你,我现在会努力解决这个问题,至少我现在可以设置标志了。如果没有你的回答,我不知道我会怎么做!!它起作用了!!现在它工作了!!我想知道在哪里可以找到你提供的信息?所有的官方文件我都看过好几遍了!谢谢,谷歌