Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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
Variables 基于其他变量生成新变量_Variables_Makefile - Fatal编程技术网

Variables 基于其他变量生成新变量

Variables 基于其他变量生成新变量,variables,makefile,Variables,Makefile,我是Makefiles新手,对Makefiles中的变量有疑问 比如说,我有 dirs := $(shell PERL5OPT="" get-list.pl) 在哪里,, get-list.pl say返回一个bcd 现在我想做一些新的变量dirs_a,dirs_b,dirs_c等等 我目前的做法是: dirs := $(shell PERL5OPT="" get-list.pl) dirs_$(var) := $(shell PERL%OPT="" some-other-perl-file

我是Makefiles新手,对Makefiles中的变量有疑问

比如说,我有

dirs := $(shell PERL5OPT="" get-list.pl)
在哪里,, get-list.pl say返回一个bcd

现在我想做一些新的变量dirs_a,dirs_b,dirs_c等等

我目前的做法是:

dirs := $(shell PERL5OPT="" get-list.pl)

dirs_$(var) := $(shell PERL%OPT="" some-other-perl-file.pl $(var))

define new-var
$(foreach var,$(dirs),$(dirs_$(var)))
endef

final-target:
    $(new-var)
这似乎不起作用,并且没有向some-other-perl-file.pl传递任何参数。有人能指出我做错了什么吗

_dirs := $(shell PERL5OPT="" get-list.pl)
dirs=$(_dirs:%=dir_%)
这应该可以解决它

它将使:

a、b、c、d

目录a目录b目录c目录d


那么您想创建一个包含所有目录的变量,还是每个目录创建一个变量?我想每个目录创建一个变量。基本上我需要每个目录1个变量,所以我创建了不同的变量,因为我不确定我们可以在Makefile中使用类似数组的东西,而不是不同的变量。我不确定我是否得到了正确的结果,但我想创建新的变量dirs_a,dirs_b等,它们的值应该由some-other-perl-file.pl.dirs返回=$(_-dirs:%=dir_uu%)中有一个输入错误。它应该是:dirs=$(_-dirs:%=dirs_u%)这行的基本功能是,它在_-dirs中迭代每个元素,并用规则%->dirs_u%转换该元素,其中%是之前的元素。因此“a”将变成“dirs_ua”。好的,谢谢你的澄清,但这不是我想要的。