За файл CPPFLAGS в Android.mk - PullRequest
       32

За файл CPPFLAGS в Android.mk

6 голосов
/ 16 сентября 2011

Я работаю над файлом 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 ]

2 голосов
/ 16 сентября 2011

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

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

0 голосов
/ 08 января 2012

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

...