2010-07-09 2 views
1

Est-il possible d'avoir des cibles génériques pour les non-noms de fichiers, comme:générique (non-file) pattern matching dans le Makefile

build-%: pull-% build-%.stamp 
pull-%: 
    cd $* ; git log HEAD..origin/master | grep -q . && (git pull ; $(RM) ../build-$*.stamp) || true 
build-%.stamp: 
    cd $* ; ant 
    touch [email protected] 

L'idée est d'appeler make build-foo, qui n'appeler la construction quand il y a de nouveaux changements en amont (qui sont retirés).

Toutefois, la correspondance % -pattern semble s'appliquer uniquement aux noms de fichiers, même lors de la définition du formulaire développé ("build-foo") dans .PHONY.

Dois-je utiliser des modèles, tels qu'utilisés dans Makefile generic pattern rule -- xyzzy-en_US.ext2 from xyzzy.ext0?

+0

Cela semble fonctionner assez bien dans gnumake 3,81. Quelle marque utilisez-vous? – Beta

+0

le même, GNU Make 3.81. Utiliser le Makefile comme ci-dessus 'make build-foo' aboutit à' make: *** Aucune règle pour rendre la cible 'build-foo '. Stop.' - pas "assez bien" pour moi. J'ai maintenant utilisé l'approche TEMPLATE, fonctionne très bien. – blueyed

Répondre

2

Ah! Mettez un point-virgule après la règle build-%.

(je n'ai pas remarqué ce problème parce que je mets une commande dans la règle. @echo [email protected])