Одна вещь, которую вы можете сделать с GnuMake, - это использовать макросы, которые расширяются до правил с помощью встроенного foreach
. Что-то вроде:
TARGETS := build all foo bar baz
define DEBUG_TARGET_RULE
$(1).debug:
$$(MAKE) DEBUG=1 $(1)
debug.$(1):
$$(MAKE) DEBUG=1 $(1)
endef
$(foreach target,$(TARGETS),$(eval $(call DEBUG_TARGET_RULE,$(target))))
Это позволит вам набрать make debug.foo
или make foo.debug
, и оно автоматически превратится в make DEBUG=1 foo
, и оно будет работать для любой цели, которую вы положили $(TARGETS)