Makefile problem -- zavislost pred provedenim

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pondělí Říjen 14 13:06:01 CEST 2002


On 12 Oct 2002, Jiri Mikulasek wrote:

> dialup: dialup-prepare all
> 
> dialup-prepare:
>         cp -f main.cf.dial-up main.cf
>         cp -f sender_canonical.dial-up sender_canonical

Nikde neni napsano, ze se prerekvizity mejkuji (to je pekne cesky, co?)
v tom poradi, v jakem jsou napsany. Dokonce je to tak, ze mohou byt
zpracovavany paralelne.

Spravnejsi reseni je bud 1. explicitne vyvolat make rekurzivne, tj.

	dialup:
		cp -f ...
		$(MAKE) all

nebo 2. nejak rafinovane zorganizovat pravidla, treba s vyuzitim
promennych, napr.

	all: aliases.db ...

	aliases.db: ... main.cf ...
		...

	ifeq ($(dialup),yes)
	main.cf: force
		cp -f $@.dial-up $@		
	endif

	.PHONY: force
	force: ;

a pak spoustet ne "make dialup", ale "make dialup=yes". Nebo
3. kombinaci obeho, kdy se jeste prida pravidlo

	dialup:
		$(MAKE) dialup=yes

aby slo pouzivat jen "make dialup".

--Pavel Kankovsky aka Peak
"Welcome to the Czech Republic. Bring your own lifeboats."



Další informace o konferenci Linux