Каждый файл CPPFLAGS в 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

Я попытался просто сделать foo_baz.o: вместо $(my_intermediates) и попробовали заменить += на := без изменения.

Итак, есть ли Android-специфический способ переопределить CPPFLAGS (или CFLAGS) для определенного исходного файла?

(в этом случае я использую источники Eclair Android, хотя это может относиться к NDK; см. Мой ответ ниже.)

2 ответов


как обычно, задав вопрос, потратив на это много времени, я быстро нашел ответ. Мне нужно использовать PRIVATE_CPPFLAGS вместо LOCAL_CPPFLAGS.

однако это, по-видимому, относится только к исходному дистрибутиву Android (по крайней мере, Eclair) и NDK r6b. Если бы я использовал NDK r6, это, вероятно, сработало бы так, как есть.


самый простой способ иметь разные параметры для некоторых исходных файлов-сгруппировать эти файлы в Android.mk вместе для создания статической библиотеки include $(BUILD_STATIC_LIBRARY) который затем будет указан в LOCAL_STATIC_LIBRARIES для результирующего общего объекта.