*** 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 un TAB.
  • 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 le ifeq 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 la ifeq 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.
InformationsquelleAutor darklord | 2016-01-02