2011-09-16 5 views
5

하나의 모듈에 대해 하나의 파일에 다른 CPPFLAGS가 필요한 Android.mk 파일에서 작업하고 있습니다. 즉, -frtti를 사용 가능하게해야하며, 나머지는 -fno-rtti의 Android 기본값이 필요합니다.Android.mk의 파일 별 CPPFLAGS

분명한 해결책은 target-specific variables이지만 이상하게도 값이 올바른 시간에 고정되어 있는지 확인하기 위해 약간의 실수로 컴파일에 영향을 미치지 않는 것 같습니다.

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:을하고, 어떤에 :=에 대한 +=을 대체 시도하지 않은 한을 : 여기

내 Android.mk에서 추출물의 (이름은 저를 보호하기 위해 변경) 변화.

그래서 특정 소스 파일에 대해 CPPFLAGS (또는 CFLAGS)를 재정의 할 수있는 Android 관련 방법이 있습니까?

(이 경우에 나는 그것이 NDK에 적용 할 수있는 불구하고, 에클 레어 안드로이드 소스를 사용하고, 아래, 내 대답을 참조하십시오.)

+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에 나열하는 것입니다.

관련 문제