2011-09-16 15 views
5

Sto lavorando su un file Android.mk in cui, per un singolo modulo, uno dei file richiede CPPFLAG diversi; vale a dire, ha bisogno di -frtti abilitato, mentre altri hanno bisogno del default Android di -fno-rtti.CPPFLAGS per file in Android.mk

La soluzione ovvia era target-specific variables, ma stranamente non sembrano influenzare la compilazione, anche con qualche giochino per garantire che i valori vengano corretti al momento giusto.

Ecco un estratto dal mio Android.mk (nomi cambiati per proteggere me):

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 

ho cercato semplicemente facendo foo_baz.o: al posto di $ (my_intermediates), ed ho provato sostituendo += per := a nessuno modificare.

Quindi, esiste un modo specifico per Android per sovrascrivere CPPFLAGS (o CFLAGS) per un file sorgente specifico?

(In questo caso sto utilizzando le fonti Eclair di Android, anche se può applicare alla NDK, vedi la mia risposta, qui di seguito.)

+3

Sembra che la macro 'local-intermediatemedia-dir' sia scomparsa (ho NDK r9b). Quale sarebbe la sostituzione? – AndiDog

+0

hai trovato la sostituzione? –

risposta

2

Come al solito, dopo aver fatto la domanda dopo aver trascorso un sacco di tempo su di esso, ho trovato la risposta in breve tempo. Devo usare PRIVATE_CPPFLAGS anziché LOCAL_CPPFLAGS.

Tuttavia, questo sembra essere il caso solo per la distribuzione di sorgenti Android (almeno Eclair) e NDK r6b. Se stavo usando NDK r6, questo probabilmente avrebbe funzionato così com'è.

+0

Qualche esempio di lavoro successivo per Android NDK, per favore? – Krypton

0

Il modo più semplice per avere parametri diversi per alcuni file sorgente è raggruppare insieme questi file in Android.mk per produrre una libreria statica include $(BUILD_STATIC_LIBRARY) che verrà quindi elencata in LOCAL_STATIC_LIBRARIES per l'oggetto condiviso risultante.