Frage

Ich bin vor ein ziemlich seltsames Problem mit machen. Meine Make-Datei enthält:

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: ...
.....

Jetzt „make -f Makefile item1“ funktioniert, aber wenn ich versuche, „make -f Makefile all“ es funktioniert nicht. Haben Sie Leute in meiner Make-Datei Probleme sehen?

Danke


Addendum :

Nun, es sieht aus wie make erlaubt keine Ziele, die gleichen Namen in der aktuellen Ebene als ein Verzeichnis hat. Beobachtung:

  • "alle" ist ein Verzeichnis @ $ (HOME) / apps
  • all1: item1 item2 funktioniert
  • all: item1 item2 nicht funktioniert

So dass jeder Zielname scheint denselben Namen wie ein Verzeichnis mit fehlschlagen (wie in, etwas Sinnvolles zu tun, scheitert).

Ich bin mir ziemlich sicher, dass ich etwas absurd falsch hier tue.

War es hilfreich?

Lösung

Wenn Sie schreiben:

all: item1 item2

und dann make all anfordern, das sagt make:

  • Finden Sie eine Dateisystem-Objekt namens all und sicher etwas machen es hängt davon ab (item1, item2) ist auf dem neuesten Stand.
  • Wenn all existiert nicht oder nicht mehr aktuell ist w.r.t entweder die Dateisystemobjekte item1 oder item2 genannt, dann die angegebenen Aktionen ausführen (keine in diesem Beispiel) und dann prüfen, bisher all auf.
  • Wenn all ein Verzeichnis ist, es existiert. Wenn es vor kurzem geändert wurde, wird es auf dem neuesten Stand sein.

Der Vorschlag .PHONY: all item1 item2 zu verwenden ist gut für GNU Make; es nicht mit anderen Varianten der make arbeiten.

Sie Zielnamen nicht verwenden, die Verzeichnisnamen sind - es sei denn, Sie sicher, dass Sie wissen, was Sie tun. Und verwenden .PHONY.

Andere Tipps

Versuchen Sie falsche Deklarierung Ihre Nur- Ziel.

Nun sieht aus wie make erlaubt keine Ziele, die als ein Verzeichnis in der aktuellen Ebene denselben Namen haben. Beobachtung:

- "all" ist ein Verzeichnis @ $ (HOME) / apps -all1 / 2/3: item1 item2 arbeitet -all: item1 item2 nicht so funktioniert die jede Zielnamen, die denselben Namen wie das Verzeichnis

.

Ich bin ziemlich sicher, dass ich etwas absurd falsch hier tue.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top