GNU Make:如何为特定目标的命令添加条件标志
如何在Makefile中根据通配符参数动态设置命令行标志?
你说得对,把这种条件逻辑放在Makefile里确实能让脚本职责更清晰,保持模块化。这里有两种简便的实现方式,都不用修改你的buildtxt.py:
方法一:用条件分支分开写命令
这种方式可读性强,适合逻辑稍微复杂的场景:
debug/abc-%.txt: ifeq ($*,debug) python buildtxt.py --firstFlag --debug else python buildtxt.py --firstFlag endif
这里的$*是Make的自动变量,会自动替换成模式规则里%匹配到的内容。ifeq会判断这个值是否等于debug,然后执行对应的命令。
方法二:用Make函数内嵌条件判断
如果想更紧凑,一行搞定,可以用$(if)和$(filter)组合:
debug/abc-%.txt: python buildtxt.py --firstFlag $(if $(filter debug,$*),--debug,)
$(filter debug,$*)会检查$*是不是debug,匹配到就返回debug,否则返回空字符串$(if)函数会根据第一个参数的结果决定返回值:如果第一个参数非空,就返回--debug,否则返回空(第三个参数留空)
两种方法都能完美实现你的需求,第二种更简洁,适合这种简单的条件判断场景,完全在Make层面处理,不会侵入Python脚本的逻辑。
内容的提问来源于stack exchange,提问作者HerpDerpington
相关产品推荐
相关产品推荐

