Závislost problém s GNU make

hlasů
2

Jsem čelí poněkud zvláštní problém s make. Můj make soubor obsahuje:

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

A teď, „ make -f Makefile item1“ funguje, ale když jsem zkusit „ make -f Makefile all“ to nefunguje. Myslíte si lidé vidí nějaké problémy v mém makefile?

dík


Dodatek :

No, vypadá to, že make neumožňuje cíle, které mají stejný název jako nějakého adresáře na současné úrovni. Pozorování:

  • All je adresář @ $ (HOME) / apps
  • all1: item1 item2 práce
  • all: item1 item2 nefunguje

Takže jakýkoli cíl název má stejný název jako adresář zdá selhání (jako v, nedokáže dělat něco užitečného).

Jsem si jistý, že dělám něco špatného nesmyslně zde.

Položena 25/02/2009 v 14:23
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

Když píšete:

all: item1 item2

a pak požadavek make all, který říká make:

  • Najít objekt systému souborů s názvem alla ujistěte se, že vše záleží na tom, ( item1, item2) je až do dnešního dne.
  • Pokud allneexistuje, nebo je zastaralý wrt jeden z objektů systému souborů s názvem item1nebo item2, pak ho do zadané akce (none v tomto případě) a pak zvážit allaktuální.
  • Pokud allje adresář, že existuje. Kdyby to byl nedávno změněn, bude aktuální.

Návrh na použití .PHONY: all item1 item2je vhodný pro GNU make; to nefunguje s jinými variantami make.

Nepoužívají cílové názvy, které jsou názvy adresářů - pokud si nejste jisti, že víte, co děláte. A používat .PHONY.

Odpovězeno 25/02/2009 v 14:57
zdroj uživatelem

hlasů
1

Zkuste falešný-deklarovat svůj all-cíl.

Odpovězeno 25/02/2009 v 14:35
zdroj uživatelem

hlasů
0

No vypadá to make neumožňuje cíle, které mají stejný název jako nějakého adresáře na současné úrovni. pozorování:

- „všechny“ je adresář @ $ (HOME) / apps -all1 / 2/3: item1 item2 práce -všechny: item1 item2 nefunguje, takže je jakýkoli cíl název má stejný název jako adresář.

Jsem si jistý, že dělám cokoli nesmyslně špatně.

Odpovězeno 25/02/2009 v 14:48
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more