在Android.mk中按文件CPPFLAGS

时间:2011-09-16 16:36:12

标签: android makefile android-ndk android-source

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

显而易见的解决方案是target-specific variables,但奇怪的是它们似乎不会影响编译,即使有一些小问题要确保在正确的时间修复这些值。

这是我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

我曾尝试用foo_baz.o:代替$(my_intermediates),并尝试用+=代替:=无变化。

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

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

2 个答案:

答案 0 :(得分:2)

像往常一样,在花了很多时间问这个问题之后,我已经在短时间内找到了答案。我需要使用PRIVATE_CPPFLAGS代替LOCAL_CPPFLAGS

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

答案 1 :(得分:0)

为某些源文件设置不同参数的最简单方法是将这些文件组合在Android.mk中以生成静态库include $(BUILD_STATIC_LIBRARY),然后在LOCAL_STATIC_LIBRARIES中列出生成的共享对象