Android ndk 如何为编译android NDK项目设置标准c99

Android ndk 如何为编译android NDK项目设置标准c99,android-ndk,Android Ndk,我想建立一个小的库,它是用C99为Android编写的,但编译器给出了日志 note: use option -std=c99 or -std=gnu99 to compile your code 我可以在哪里设置它?在您的Android.mk add中 LOCAL_CFLAGS += -std=c99 例如: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS += -std=c99 LOCAL_SRC_FILES

我想建立一个小的库,它是用C99为Android编写的,但编译器给出了日志

note: use option -std=c99 or -std=gnu99 to compile your code
我可以在哪里设置它?

在您的Android.mk add中

LOCAL_CFLAGS += -std=c99
例如:

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)

确保在auselen回答的附录中添加“include$(CLEAR\u VARS)”后添加“LOCAL\u CFLAGS”:


根据NDK docs(),本地\u CFLAGS将只应用于每个模块-如果您想在整个项目中实现此行为,请在Application.mk中设置APP\u CFLAGS。此外,cFLAGS将覆盖C和C++源,CPPFLAGS只覆盖C++。

< P>因为人们可能会来到这里,寻找“设置标准的C99编译Android NDK项目”,我想这需要更新。 对于带有Gradle 2.5的Android Studio 1.4,可以在build.Gradle中设置c99

请注意,BUILD.GRADLE中区分大小写的语法已从cFlags更改为cFlags(许多联机示例使用旧语法)

下面是一个build.gradle,它是从示例hello jni项目中修改的,并添加了C99支持

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")
    }
}

感谢@MandisaW的补充,但是在声明LOCAL_CFLAGS+=-std=c99中用APP_CFLAGS替换LOCAL_CFLAGS对我来说不起作用。Lisarien,你不能用一个替换另一个-APP_CFLAGS必须放在另一个文件Application.mk中,而不是Android.mk。请注意,Android studio会自动生成Android.mk文件。要使用自定义的Android.mk,请检查此答案我的Android.mk评论已过期-请检查下面我的gradle答案。