No. If the target does not exist then make will always run the recipe.
There are hacky ways that your all
recipe could check to see if any of the prerequisites had been built and behave differently if so. At least, if you're using GNU make.
ETA:
One way would be to add a $(eval BUILT = 1)
to each target, then in the all
target you can see if BUILT
is set. This requires a moderately recent version of GNU make:
BUILT =
all: a b
@[ -n '$(BUILT)' ] && echo done
a:
touch $@ $(eval BUILT = 1)
b:
touch $@ $(eval BUILT = 1)