Question

Je suis face à un problème assez étrange faire. Mon fichier make contient:

all: item1 item2

item1: dep1 dep2
dep1:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D_ALL_OBJECTS)
    @echo
dep2:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D2_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D2_ALL_OBJECTS)
    @echo
item2: ...
.....

« make -f Makefile item1 » fonctionne, mais lorsque je tente « make -f Makefile all » ça ne marche pas. Avez-vous les gens voient des problèmes dans mon makefile?

Merci


Addendum :

Eh bien, il semble que faire ne permet pas d'objectifs qui ont même nom que dans un répertoire du niveau actuel. Observation:

  • "all" est un répertoire @ $ (HOME) / apps
  • all1: item1 item2 fonctionne
  • all: item1 item2 ne fonctionne pas

un nom de cible ayant même nom qu'un répertoire semble échouer (comme, ne parvient pas à faire quoi que ce soit utile).

Je suis assez sûr que je suis en train de faire quelque chose absurdement mal ici.

Était-ce utile?

La solution

Lorsque vous écrivez:

all: item1 item2

et demander make all, qui dit make:

  • Trouver un objet système de fichiers appelé all et faire tout ce que cela dépend (item1, item2) est à jour.
  • Si all n'existe pas ou est obsolète w.r.t ou l'autre des objets du système de fichiers appelé item1 ou item2, puis effectuez les actions spécifiées (aucun dans cet exemple), puis envisager all à jour.
  • Si all est un répertoire, il existe. Si elle a été modifiée récemment, il sera à jour.

La suggestion d'utiliser .PHONY: all item1 item2 est bon pour GNU Make; il ne fonctionne pas avec d'autres variantes de make.

Ne pas utiliser des noms de cibles qui sont des noms de répertoire - sauf si vous êtes sûr que vous savez ce que vous faites. Et utiliser .PHONY.

Autres conseils

Essayez -phony déclarant votre tout- cible.

Eh bien ressemble à faire ne permet pas de cibles qui ont même nom que dans un répertoire du niveau actuel. Observation:

- "tout" est un @ répertoire $ (HOME) / apps -all1 / 2/3: Item1 item2 fonctionne -Toutes: Item1 item2 ne fonctionne pas est le tout nom de cible ayant même nom que le répertoire

.

Je suis assez sûr que je suis en train de faire quoi que ce soit absurdement mal ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top