Makefile目标中设置变量的清晰可读方式
以下是我目前如何为不同的目标定制Makefile变量(示例): 对我来说,这看起来已经很清晰易读了,因为它没有使用任何想象中的if-then-else模式,也没有滥用逻辑Makefile目标中设置变量的清晰可读方式,makefile,Makefile,以下是我目前如何为不同的目标定制Makefile变量(示例): 对我来说,这看起来已经很清晰易读了,因为它没有使用任何想象中的if-then-else模式,也没有滥用逻辑$(shell…) 问题:是否有更好(但仍然干净)的方法来实现列出的变量覆盖?特别是,我喜欢摆脱重复的目标:名称。我认为这是不可能的。Make实际上没有办法将两个变量赋值组合成一行,因此自定义:ARG_a=29和自定义:ARG_B=149必须分开。同样地,custom:ARG_A=29和custom:math做的事情根本不同,M
$(shell…
)
问题:是否有更好(但仍然干净)的方法来实现列出的变量覆盖?特别是,我喜欢摆脱重复的
目标:
名称。我认为这是不可能的。Make实际上没有办法将两个变量赋值组合成一行,因此自定义:ARG_a=29
和自定义:ARG_B=149
必须分开。同样地,custom:ARG_A=29
和custom:math
做的事情根本不同,Make不允许将它们结合起来。可以,但是不行。(如果是这样的话,结果的可读性就会比你的要差。)我认为这是不可能的。Make实际上没有办法将两个变量赋值组合成一行,因此自定义:ARG_a=29
和自定义:ARG_B=149
必须分开。同样地,custom:ARG_A=29
和custom:math
做的事情根本不同,Make不允许将它们结合起来。可以,但是不行。(如果是这样的话,结果的可读性就会比你现在看到的要差。)
#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