makefile - In make, how do I run prequisites exactly once? -
let's pretend have 2 servers , b want have ability deploy separately , in makefile targets. let's there's preparation step want run once before deployment, whether it's 1 or both. how that?
here's have far, it's not dry.
clean: # cleanup stuff deploy: make clean ssh $(server) do-remote-deployment-stuff deploy-to-a: deploy server=myservera deploy-to-b: deploy server=myserverb deploy-all: deploy-to-a deploy-to-b
see how it'd run 'clean' twice?
instead of using recursion, put target want run once prerequisite:
deploy-to-a: clean ... deploy-to-b: clean ...
however, attempt set server= etc. won't work, , neither deploy-all
rule. can't put make targets make recipes. can use pattern rules:
servers = b a_server = myservera b_server = myserverb deploy-all: $(servers:%=deploy-to-%) deploy-to-%: clean ssh $($*_server) do-remote-deployment-stuff clean: # cleanup stuff
Comments
Post a Comment