# 'gem list -i foo' will print 'true' if a gem is already installed. 'false' otherwise GEMS=clamp rake # From the GEMS list, generate a list of make targets TARGETS=$(foreach gem,$(GEMS),gem-$(shell gem list -i $(gem))-$(gem)) build: $(TARGETS) build: @echo "=> OK to build" .PHONY: gem-false-% gem-false-%: GEM=$(@:gem-false-%=%) gem-false-%: @echo Installing "$(GEM)" gem install $(GEM) .PHONY: gem-true-% gem-true-%: GEM=$(@:gem-true-%=%) gem-true-%: @echo "Found $(GEM)"