在Android.mk中按文件CPPFLAGS

Art*_*ski 6 android makefile android-ndk android-source

我正在开发一个Android.mk文件,对于单个模块,其中一个文件需要不同的CPPFLAGS; 即,它需要-frtti启用,而其他人需要Android默认的-fno-rtti.

显而易见的解决方案是特定目标的变量,但奇怪的是它们似乎不会影响编译,即使有一些摆弄以确保值应该在正确的时间固定.

这是我Android.mk的摘录(名称已更改以保护我):

LOCAL_MODULE := foo_bar

LOCAL_SRC_FILES := \
    foo_bar.cpp \
    foo_baz.cpp

my_intermediates:= $(local-intermediates-dir)/foo_baz.o
$(my_intermediates): LOCAL_CPPFLAGS := -frtti
Run Code Online (Sandbox Code Playgroud)

我试图简单地做foo_baz.o:代替$(my_intermediates),并试图替换+=:=没有变化.

那么,是否有特定于Android的方法来覆盖特定源文件的CPPFLAGS(或CFLAGS)?

(在这种情况下,我使用的是Eclair Android源代码,虽然它可能适用于NDK;请参阅下面的答案.)

Art*_*ski 3

像往常一样,在花了很多时间问这个问题后,我很快就找到了答案。我需要使用PRIVATE_CPPFLAGS而不是LOCAL_CPPFLAGS.

然而,这似乎仅适用于 Android 源代码发行版(至少是 Eclair)和 NDK r6b。如果我使用 NDK r6,这可能会按原样工作。