在Android.mk中,如果我这样做:
LOCAL_CFLAGS := -foo
然后,在同时编译C和C++代码时将使用-foo。我不做任何设置LOCAL_CPPFLAGS的操作,它大概继承了所有CFLAGS。 (为什么?)
如何设置仅C选项?
这是必需的,因为某些编译器选项没有具有相反效果的匹配选项(因此您不能取消设置它们),而且我可能还希望C和C++的定义完全不同。
(Android NDK R9B)
最佳答案
最简单的答案是从具有不同定义和选项的文件构建单独的静态库。
您还可以使用标记机制:
LOCAL_C_SRC_FILES := $(filter %.c, $(LOCAL_SRC_FILES))
LOCAL_C-ONLY_CFLAGS := -DDEBUG=1
TARGET-process-src-files-tags += $(call add-src-files-target-cflags, $(LOCAL_C_SRC_FILES), $(LOCAL_C-ONLY_CFLAGS))