*** recette commence avant la première cible. Arrêter
Je viens de télécharger le android open source project et a essayé de construire avec faire la je reçois le message:
build/core/prebuilt.mk:91: *** recipe commences before first target. Stop.
Ici est des fichier extrait (La première ligne étant ici le numéro de ligne 89):
ifneq ($(prebuilt_module_is_a_library),)
ifneq ($(LOCAL_IS_HOST_MODULE),)
$(transform-host-ranlib-copy-hack)
else
$(transform-ranlib-copy-hack)
endif
endif
Je ne sais pas quel est le problème avec ce dossier? Le précédent de l'espace blanc sur la ligne 91 est un onglet.
- Le
TAB
signifie que Faire l'interprète de la ligne 91 comme une commande, qui devrait faire partie d'une règle. L'extrait est assez pour aller sur; si c'est une partie de la règle, de Faire est en quelque sorte à défaut d'analyser la première ligne de la règle correctement, et si elle ne fait pas partie de la règle, de la ligne 91 ne doit pas être une commande et ne doit pas commencer par unTAB
. - La question est de savoir ce qui vient AVANT cette dans le makefile? Il semble probable que la variable
transform-host-ranlib-copy-hack
est censé être une partie de la recette, afin de l'avoir à l'être précédée par un ONGLET est correcte. Le problème, c'est que ne pas penser que vous êtes dans une recette contexte, ce qui signifie que quelque chose avant que leifeq
que vous avez indiquée n'est pas droit. Mon soupçon est que la version de vous faire avoir n'est pas compatible avec la version utilisée par l'auteur du projet open source et tout ce qui vient avant laifeq
n'est pas portable entre eux. - Cela semble être le cas. Il a besoin de la version 3.8.1 et mon make version 4.0. J'ai pensé qu'il est rétro-compatible.
- Il n'existe pas de version 3.8.1. Je suppose que tu veux dire 3.81. Ils sont pour la plupart vers l'arrière-compatible, mais il y a des changements incompatibles avec le temps (3.81 a été publié en 2006). Les différences sont généralement faciles à traiter et souvent les plus âgés de la syntaxe n'a pas été prévu pour être valide, mais n'était pas correctement contrôlés. Sans voir les lignes avant le
ifeq
c'est tout ce que je peux dire. Voir git.savannah.gnu.org/cgit/make.git/tree/NEWS pour plus d'informations sur les modifications apportées à chaque version de make.
Vous devez vous connecter pour publier un commentaire.
Faire est très délicat sur les espaces et les tabulations, il traite en retrait des lignes de commandes, donc vous devez les supprimer. E. g. il doit être:
- Je construire PSBA 2.3.1 Ubuntu 16, puis a obtenu le même message d'erreur que vous avez.
Puis j'ai changé le , la version de v4.1 à v3.81, notez que v3.82 est aussi de la mauvaise version. Enfin je construire PSBA avec succès!