J'ai une application native Android qui se construit pour plate-forme x86, armeabi et armeabi-v7a. Maintenant, selon que la plate-forme est x86 ou arm, j'ai besoin d'exécuter le script en conséquence avec les arguments correspondants afin que les variables d'environnement de l'outil tiers appropriées soient définies. J'ai essayé de faire ci-dessous:Android exécuter shell script via makefile pour chaque plate-forme mentionnée dans APP_ABI
.o.cpp:
ifeq ($(TARGET_ARCH),x86)
$(info $(shell ($(CACHE_LOCAL_PATH_MAIN)/setup_tool.sh x86)))
else
$(info $(shell ($(CACHE_LOCAL_PATH_MAIN)/setup_tool.sh arm)))
endif
Mais le problème est, lorsque le makefile est analysé, ces scripts sont exécutés dans la phase initiale elle-même 3 fois et non avant la compilation de chaque plate-forme commence. Existe-t-il un moyen d'obtenir cette correction afin que le script soit exécuté juste avant que la compilation pour chaque plate-forme commence? Merci.
MIS À JOUR avec le fichier Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := \ <path_to_include_files>
LOCAL_CFLAGS := <cflags included here>
LOCAL_LDLIBS := <ld libs included here>
LOCAL_SRC_FILES := <src files to be compiled>
LOCAL_MODULE := <module_name>
LOCAL_SHARED_LIBRARIES := <shared libs on which we are dependent>
LOCAL_WHOLE_STATIC_LIBRARIES := <static libs>
include $(BUILD_SHARED_LIBRARY)
Si vous avez ** Android.mk **, la meilleure pratique consiste à y mettre toutes les déclarations make pertinentes. Rappelez-vous que ** Android.mk ** est juste un makefile, et suit les mêmes règles de syntaxe et cycle de vie qu'un makefile habituel, seulement il est inclus dans le framework sophistiqué de NDK, et utilisé plusieurs fois (une fois par ABI) et définit la bibliothèque native comme cible. Vous pouvez donc exécuter 'setup_tool.sh' en tant que dépendance de la bibliothèque native. –
Oui, nous utilisons Android.mk. Pouvez-vous s'il vous plait prendre soin de partager comment j'ajoute un script shell en tant que dépendance pour l'objet partagé que je vise? Le format de construction du .so ressemble à celui que j'ai ajouté à ma question. –
Quand avez-vous l'intention d'utiliser ces variables environnementales? Dans l'exécution de cette règle, ou dans une autre règle? – Beta