以下是我目前如何为不同的目标自定义Makefile变量(玩具示例):
#set default values
ARG_A = 100
ARG_B = 50
OP = ,
#combine vars for easier reuse in multiple targets
OPTS = $(ARG_A) $(OP) $(ARG_B)
math:
python -c "print $(OPTS)"
#add custom targets with various variable overrides
plus: OP=+
plus: math
minus: OP=-
minus: math
plus100: ARG_B = 100
plus100: plus
minus100: ARG_B = 100
minus100: minus
custom: ARG_A = 29
custom: ARG_B = 149
custom: OP = *
custom: math
这对我来说已经看起来干净可读,因为它不使用任何花哨的if-then-else模式,并且不会滥用$(shell ...)
逻辑。
问题:是否有更好(但仍然干净)的方法来实现列出的变量覆盖?特别是,我喜欢摆脱重复的target:
名称。