Contrôle des drapeaux de compilation dans l'Android NDK?
Je sais que je peux utiliser LOCAL_CFLAGS
pour transmettre des arguments au compilateur. Cependant, ndk-build
est l'insertion d'options après mon LOCAL_CFLAGS
, et, par conséquent, ils sont prioritaires. Par exemple, je tiens à préciser -Ofast
, mais ndk-build
ajoute -O2
après mes propres drapeaux, et depuis que la dernière option est celle qui n'a aucun effet, je ne suis pas en mesure de tester mon code avec certaines options d'optimisation ensemble.
Est-il de toute façon à force de mon LOCAL_CFLAGS
être la dernière des options sur la commande de construction, ou pour désactiver ndk-build
de l'utilisation de certains drapeaux?
Par exemple, mon LOCAL_CFLAGS
est fixé à:
-Wall -Wno-psabi -Ofast -D CP_USE_DOUBLES=0 -D USE_CHIPMUNK
Et l'appel à g++
que ndk-build
fait est:
/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
Il y en a beaucoup là-dedans, mais plus particulièrement pour l'avis qu'il précise tout d'abord -Os
, puis il y a mon -Ofast
, et puis après il y a -O2
. Pourquoi il spécifie -Os
si elle va le dire plus tard -O2
, je ne sais pas, mais je suis frustré de mon -Ofast
est remplacée.
OriginalL'auteur Cornstalks | 2012-11-10
Vous devez vous connecter pour publier un commentaire.
Ajouter
à votre Demande.mk.
Il ne s'arrêtera pas NDK d'ajouter
-O2
mais il place le drapeau de votre pays après le NDK.Cela fonctionne pour moi avec le NDK r8b.
g++
.-O2
est toujours après-Ofast
.Pourriez-vous poster votre Demande.mk fichier?
Désolé, pour une raison quelconque, j'ai complètement mal lu et vu comme
LOCAL_CFLAGS
. Ce qui a fonctionné pour moi, merci!OriginalL'auteur Andrey Kamaev