2012-11-10 12 views
9

Wiem, że mogę użyć LOCAL_CFLAGS do przekazywania argumentów do kompilatora. Jednak ndk-build wstawia opcje po moim LOCAL_CFLAGS, a zatem mają one pierwszeństwo. Na przykład, chcę podać -Ofast, ale ndk-build dodaje -O2 po moich własnych flagach, a ponieważ tylko ostatnia opcja to ta, która ma jakikolwiek efekt, nie mogę przetestować mojego kodu z określonymi ustawieniami optymalizacji.Kontrolowanie flag kompilatora w systemie Android NDK?

Czy jest jakiś sposób na wymuszenie, aby moje LOCAL_CFLAGS były ostatnimi opcjami w komendzie kompilacji lub wyłączenie ndk-build przed użyciem pewnych flag?

Na przykład, mój LOCAL_CFLAGS jest ustawiony na:

-Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK 

i wezwanie do g++ że ndk-build czyni to:

/Library/Android/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi-v7a/objs/native-activity/Main.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-exceptions -fno-rtti -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Ijni -Ijni/Chipmunk/include/chipmunk -I/Library/Android/android-ndk-r8b/sources/android/native_app_glue -I/Library/Android/android-ndk-r8b/sources/cxx-stl/stlport/stlport -I/Library/Android/android-ndk-r8b/sources/cxx-stl//gabi++/include -Ijni -DANDROID -Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK -Wa,--noexecstack -frtti -O2 -DNDEBUG -g -I/Library/Android/android-ndk-r8b/platforms/android-9/arch-arm/usr/include -c jni/Main.cpp -o ./obj/local/armeabi-v7a/objs/native-activity/Main.o

Dużo tam, ale zauważ, że najpierw określa on -Os, to jest mój -Ofast, a następnie jest -O2. Dlaczego określa on -Os, jeśli będzie to później mówić: -O2, nie wiem, ale jestem sfrustrowany, że mój -Ofast jest nadpisany.

Odpowiedz

9

Dodaj

APP_CFLAGS += -Ofast 

do Application.mk.

Nie powstrzyma NDK przed dodaniem -O2, ale umieści Twoją flagę po NDK. Działa to dla mnie z NDK r8b.

+0

To nie dla mnie, z jakiegoś powodu. Zmienię moje pytanie, aby pokazać rzeczywiste połączenie z 'g ++'. '-O2' jest nadal po' -Ofast'. – Cornstalks

+0

Czy mógłbyś opublikować swój plik Application.mk? –

+0

Niestety, z jakiegoś powodu zupełnie błędnie przeczytałem to i zobaczyłem jako "LOCAL_CFLAGS". To zadziałało dla mnie, dzięki! – Cornstalks

Powiązane problemy