Nutit GNU make provést konkrétní cíl

hlasů
0

Snažím se realizovat jediný cíl volá „make cleanlists“. Tento cíl nemá žádné předpoklady a měla by být provedena (v mém chápání) okamžitě a bez dotyku jiná pravidla.

.PHONY: cleanlists
cleanlists:
    @echo cleaning source and header lists ..
    @rm -f sourcelist.mk
    @rm -f headerlist.mk
    @echo done. 

Ale v případě, že tyto dva soubory neexistují jiné předpisy, které mají tyto soubory jsou předpoklady jsou kontrolovány a nakonec vede k regeneraci z nich před provedením cíl cleanlists.

Existuje nějaký jednoduchý způsob, jak nutit, aby se vyhnout tomuto chování?

dík

Položena 21/06/2010 v 11:34
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

K .mk názvy těchto dvou souborů naznačují, že jinde v makefile, který je včetně jako obsah makefile musí být analyzován a provedeny:

include sourcelist.mk
include headerlist.mk

Aby bylo možné spustit svůj make cleanlistspříkaz s up-to-date makefile, aby regeneruje tyto soubory a reparses celou makefile před výpočtem závislostí a provádění příkazů, jak je popsáno v Jak Makefiles jsou předělala .

To nedává smysl pro čistou pravidla, ale aby to neví. Můžete použít tento trik z příručky k léčbě tento konkrétní pravidlo speciálně:

ifneq "$(MAKECMDGOALS)" "cleanlists"
include sourcelist.mk
include headerlist.mk
endif
Odpovězeno 22/06/2010 v 16:12
zdroj uživatelem

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