Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile目标中设置变量的清晰可读方式_Makefile - Fatal编程技术网

Makefile目标中设置变量的清晰可读方式

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

以下是我目前如何为不同的目标定制Makefile变量(示例):

对我来说,这看起来已经很清晰易读了,因为它没有使用任何想象中的if-then-else模式,也没有滥用逻辑
$(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