在Android.mk中仅向一个文件添加编译器标志

在Android.mk中仅向一个文件添加编译器标志,android,android-ndk,java-native-interface,android.mk,Android,Android Ndk,Java Native Interface,Android.mk,我有一个Android.mk文件,其中包含许多文件,本地标签将应用于这些文件。我想对许多文件中的一个应用不同的标志。如何做到这一点 我从Android的角度搜索了互联网,但没有找到很多。考虑到下面的示例,我只想将标志TEST3应用于文件TEST3.c。我查看了,但找不到关于如何将PRIVATE\u CPPFLAGS用于一个文件的任何内容。有什么想法吗 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := test

我有一个Android.mk文件,其中包含许多文件,本地标签将应用于这些文件。我想对许多文件中的一个应用不同的标志。如何做到这一点

我从Android的角度搜索了互联网,但没有找到很多。考虑到下面的示例,我只想将标志
TEST3
应用于文件
TEST3.c
。我查看了,但找不到关于如何将
PRIVATE\u CPPFLAGS
用于一个文件的任何内容。有什么想法吗

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3

include $(BUILD_SHARED_LIBRARY)

实现目标的支持方法是为需要不同参数的C/CPP文件使用单独的静态库。在这种特殊情况下,修复将非常简单

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)  

LOCAL_MODULE := test3
LOCAL_SRC_FILES := test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3 -DTEST3
include $(BUILD_STATIC_LIBRARY)

include $(CLEAR_VARS)  

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c
LOCAL_CFLAGS := -DTEST1_2_AND_3
LOCAL_WHOLE_STATIC_LIBRARIES := test3

include $(BUILD_SHARED_LIBRARY)
还有另一种方法,类似于I

如果
-Dtest3
可以,您可以使用其他黑客:

LOCAL_PATH := $(call my-dir)

get-src-file-target-cflags = $(LOCAL_SRC_FILES_TARGET_CFLAGS.$1) -D$(basename $1)_DEFINE

include $(CLEAR_VARS)  

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3

include $(BUILD_SHARED_LIBRARY)

请参阅。

Ok中的详细信息,因此该链接确实指示了如何使用PRIVATE_CPPFLAGS,但当我尝试使用它和LOCAL_CPPFLAGS时,我得到:LOCAL_MODULE_类在调用LOCAL intermediates dir之前未定义。停止有什么想法吗?如果标签名不同,那么您可以在特定文件中使用特定的标签名,但不会对其他文件产生任何影响。做这样的私有标记机制没有什么意义。更复杂,效益更低。谢谢。我需要一点时间来测试这些方法。
LOCAL_PATH := $(call my-dir)

get-src-file-target-cflags = $(LOCAL_SRC_FILES_TARGET_CFLAGS.$1) -D$(basename $1)_DEFINE

include $(CLEAR_VARS)  

LOCAL_MODULE := test
LOCAL_SRC_FILES := test1.c test2.c test3.c
LOCAL_CFLAGS := -DTEST1_2_AND_3

include $(BUILD_SHARED_LIBRARY)