2011-09-16 8 views
5

私はAndroid.mkファイルで作業しています.1つのモジュールに対して、ファイルの1つに異なるCPPFLAGSが必要です。つまり、-frttiが有効になっている必要がありますが、他にはAndroidのデフォルトの-fno-rttiが必要です。Android.mkのファイルごとのCPPFLAGS

明白な解決策は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 

私は単に$(my_intermediates)の代わりにfoo_baz.o:をやって試してみましたが、無に:=ため+=に置き換えて試してみました変化する。

したがって、特定のソースファイルに対してCPPFLAGS(またはCFLAGS)をオーバーライドするAndroid固有の方法はありますか?

は(この場合、私はそれはNDKに適用するかもしれませんが、エクレアのAndroidのソースを使用しています。以下、私の答えを参照してください。)

+3

'local-intermediates-dir'マクロがなくなったようです(私はNDK r9bを持っています)。代わりになるのは何ですか? – AndiDog

+0

交換品を見つけましたか? –

答えて

2

通常のように、多くの時間を費やした後に質問をしましたその上で、私は短い時間で答えを見つけました。 LOCAL_CPPFLAGSの代わりにPRIVATE_CPPFLAGSを使用する必要があります。

しかし、これはAndroidソースの配信(少なくともEclair)とNDK r6bの場合のように見えます。私がNDK r6を使用していたなら、これはおそらくそれが効いていたはずです。

+0

今後のAndroid NDKの動作例を教えてください。 – Krypton

0

いくつかのソースファイルに対して異なるパラメータを設定する最も簡単な方法は、これらのファイルをAndroid.mkでグループ化して、スタティックライブラリinclude $(BUILD_STATIC_LIBRARY)を生成し、その結果の共有オブジェクトをLOCAL_STATIC_LIBRARIESにリストすることです。

関連する問題