Fiddling avec un système de construction principalement basé sur des Makefiles purs, je suis venu à la macro suivante pour le rendre facile à tester pour l'existence et définir une variable interne de chaque outil externe requis par le processus de construction.Méthode préférée pour tester les outils externes dans un Makefile
define tool-available
$(eval $(1) := $(shell which $(2)))
$(if $($(1)),$(info $(2) available at $($(1))),$(error error: missing tool $(2)))
endef
$(eval $(call tool-available,DOT,dot))
$(eval $(call tool-available,RBIN,R))
$(eval $(call tool-available,FIND,find))
Cependant, l'expérience a montré que ce n'est pas commun de le faire dans un makefile, avec la construction-systèmes tiers préfèrent généralement des scripts configure externes et d'autres mécanismes.
Outre le fait que le programme which (1) a une disponibilité limitée sur les plates-formes, y a-t-il de bonnes raisons de ne pas le faire dans un Makefile?