繁体   English   中英

makefile:多个自动变量

[英]makefile: multiple automatic variables

假设我有以下内容:

$: make foo-bar

// makefile contents
.PHONY foo-

foo-%:
    echo $*

我想增加灵活性:

# either: 

$: make foo-bar:foobar

# or: 

$: make foo-bar-foobar

// makefile contents, pseudocode

.PHONY foo- foo-?-?

foo-%:
    echo $*

foo-%1-%2:
    echo $*1 $*2

需要注意的是,我看到大型的,自动生成的makefile已经成功实现了复杂的接口,例如:

make foo:bar:baz

理想情况下,可以实现逻辑符号:

make foo::bar:baz

# but I understand that this may be reaching.

现代gnu make有什么可能吗? 我不担心较旧的版本。 优点是简洁明了,因为有些冗长的解决方法。

如果每个细分的可能性都有限,那么一种选择是:

 targs := $(foreach v1,foo foo1 foo2,\
        $(foreach v2,bar bar1 bar2,\
          $(foreach v3,foobar1 foobar2 foobar3, \
            $(v1)-$(v2)-$(v3))))

$(targs) :
    @IFS=- read v1 v2 v3 <<< $@; \
    echo $$v1 $$v2 $$v3

否则,如果第一段始终为foo-则可以执行以下操作:

 foo-% :
       IFS=- read v1 v2 v3 <<< $@; \
       echo $$v1 $$v2 $$v3

除此之外,您可能需要创建脚本以将目标手动拆分为多个部分,并且如果您想将这些部分用作单独的目标,则有可能调用子make。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM