android ndk - r16 - Cómo establecer el c99 estándar para compilar el proyecto NDK de Android
ndk r13 (3)
En tu Android.mk agrega
LOCAL_CFLAGS += -std=c99
Por ejemplo:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -std=c99
LOCAL_SRC_FILES := com_example_ndktest_TestLib.c
LOCAL_MODULE := com_example_ndktest_TestLib
include $(BUILD_SHARED_LIBRARY)
Asegúrese de agregar ''LOCAL_CFLAGS'' después de agregar ''include $ (CLEAR_VARS)''
Quiero construir una pequeña biblioteca que fue escrita en C99 para Android, pero el compilador dio el registro como
note: use option -std=c99 or -std=gnu99 to compile your code
¿Dónde puedo configurarlo?
Una adición a la respuesta de auselen:
De acuerdo con los documentos de NDK ( espejo de kandroid.org ), LOCAL_CFLAGS solo se aplicará a cada módulo: si desea este comportamiento en un proyecto completo, configure APP_CFLAGS en Application.mk. Además, CFLAGS cubrirá las fuentes C y C ++, CPPFLAGS cubre solo C ++.
Como las personas pueden llegar aquí buscando "establecer el c99 estándar para compilar el proyecto NDK de Android", creo que esto necesita una actualización.
Para Android Studio 1.4 con Gradle 2.5, el c99 se puede configurar en build.gradle
TEN EN CUENTA QUE LA SINTAXIS SENSIBLE AL CASO EN BUILD.GRADLE HA CAMBIADO DE cFlags A CFlags (muchos ejemplos en línea usan la sintaxis anterior).
Aquí hay un build.gradle modificado del proyecto hello-jni de muestra con soporte C99 agregado.
apply plugin: ''com.android.model.application''
model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.0"
defaultConfig.with {
applicationId = "com.example.hellojni"
minSdkVersion.apiLevel = 4
targetSdkVersion.apiLevel = 23
}
}
compileOptions.with {
sourceCompatibility=JavaVersion.VERSION_1_7
targetCompatibility=JavaVersion.VERSION_1_7
}
/*
* native build settings
*/
android.ndk {
moduleName = "hello-jni"
CFlags += "-std=c99"
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles += file(''proguard-rules.txt'')
}
}
android.productFlavors {
// for detailed abiFilter descriptions, refer to "Supported ABIs" @
// https://developer.android.com/ndk/guides/abis.html#sa
create("arm") {
ndk.abiFilters += "armeabi"
}
create("arm7") {
ndk.abiFilters += "armeabi-v7a"
}
create("arm8") {
ndk.abiFilters += "arm64-v8a"
}
create("x86") {
ndk.abiFilters += "x86"
}
create("x86-64") {
ndk.abiFilters += "x86_64"
}
create("mips") {
ndk.abiFilters += "mips"
}
create("mips-64") {
ndk.abiFilters += "mips64"
}
// To include all cpu architectures, leaves abiFilters empty
create("all")
}
}