Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何在makefile中的每个循环中使用其他make变量中的foreach变量?

如何在makefile中的每个循环中使用其他make变量中的foreach变量?
EN

Stack Overflow用户
提问于 2020-04-08 11:39:41
回答 1查看 25关注 0票数 0

假设我在makefile中有一个由foreach循环组成的目标

代码语言:javascript
代码运行次数:0
复制
# variables
CONFIG = 1 2 3
LOG_DIR=CONFIG_$(VAR)

# targets

run:
    running application

run_configs:
    $(foreach VAR, $(CONFIG), make run CONFIGRATION=$(VAR) logging ; )

build_dir:
    mkdir $(LOG_DIR)/

logging: build_dir
    cp logdata/* $(LOG_DIR)/.

在运行foreach目标时

代码语言:javascript
代码运行次数:0
复制
make run_configs

running application with CONFIG=1
making logdata
cp logdata/* CONFIG_/.

预期的目录为CONFIG_1,但生成的目录为CONFIG_

我知道makefile是首先解析的,所以变量LOG_DIR的计算结果为CONFIG_,因为此时foreach变量VAR为空。

我找不到一种方法来在每次执行foreach循环时更新LOG_DIR变量。

有没有办法做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 12:52:47

嗯……?当您调用递归make时,您正在设置变量CONFIGRATION

代码语言:javascript
代码运行次数:0
复制
make run CONFIGRATION=$(VAR)

但在构造变量时,您使用的是$(VAR)

代码语言:javascript
代码运行次数:0
复制
LOG_DIR=CONFIG_$(VAR)

CONFIGRATIONVAR不同。您需要将VAR传递给子pass:

代码语言:javascript
代码运行次数:0
复制
make run VAR=$(VAR)

或者在构建变量时使用CONFIGRATION

代码语言:javascript
代码运行次数:0
复制
LOG_DIR=CONFIG_$(CONFIGRATION)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61099790

复制
相关文章
makefile中的include的作用(makefile中的变量)
例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ cd test $ mkdir sub 在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件 建立一个简单的Makefile src=$(wildcard *.c ./sub/*.c) dir=$(notdir $(src)) obj=$(patsubst %.c,%.o,$(dir) ) all: @echo $(src) @echo $(dir) @echo $(obj) @echo “end” 执行结果分析: 第一行输出: a.c b.c ./sub/sa.c ./sub/sb.c wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。 第二行输出: a.c b.c sa.c sb.c notdir把展开的文件去除掉路径信息 第三行输出: a.o b.o sa.o sb.o 在$(patsubst %.c,%.o,$(dir) )中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o, 任何输出。 或者可以使用 obj=$(dir:%.c=%.o) 效果也是一样的。 这里用到makefile里的替换引用规则,即用您指定的变量替换另一个变量。 它的标准格式是 $(var:a=b) 或 ${var:a=b} 它的含义是把变量var中的每一个值结尾用b替换掉a 今天在研究makefile时在网上看到一篇文章,介绍了使用函数wildcard得到指定目录下所有的C语言源程序文件名的方法,这下好了,不用手工一个一个指定需要编译的.c文件了,方法如下: SRC = $(wildcard *.c) 等于指定编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则再增加一个wildcard函数,象这样: SRC = $(wildcard *.c) $(wildcard inc/*.c) 也可以指定汇编源程序: ASRC = $(wildcard *.S) 这样一来,makefile模板可修改的基本就是AVR名称和时钟频率了,其它的一般不用动了。
全栈程序员站长
2022/08/02
3.3K0
Sql 中的变量使用
我们在学 Python 或者其他编程语言的时候都应该有学过变量这么一个东西,可是 Sql 这种查询语言中怎么也有变量呢?具体有什么用呢?
张俊红
2019/08/28
11.5K1
Java中的增强 for 循环 foreach
  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在
IT可乐
2018/01/04
3.1K0
Java中的增强 for 循环   foreach
MySQL中变量的定义和变量的赋值使用
说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin…end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解。
全栈程序员站长
2022/06/30
9.2K0
Js中的变量
Js中的变量:  1:如果在var中没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级中申明一个变量时,就必须用var.    总之用var就对了.  3:当要声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 JScript 值 null。下面给出示例。    var bestAge = null;  4:如果声明了一个变量但没有对其赋值,该变量存在,其值为Jscript 值 undefined。下面给出示例。     var currentCou
用户1172164
2018/01/12
12.9K0
python中的变量
  什么是变量?总结不好也记不得它的完整定义,就举个例子来便于自己学习总结吧。假如我们要计算1+2的值,那么首先在内存中要存储两个值,一个是:1,一个是:2。内存中有了这两个值,计算的时候就会找到它们进行计算。但是我们可能是计算任意两个数相加,数学中我们常用 x+y 来表示两个任意的数相加。假如在程序中我们用a+b来表示两个数相加,那么当a=1,b=2时,就可以计算出1+2=3,此时这个a和b就是变量,它们也可以等于其他数值,结果也是随着数值的改变而改变的。a和b的值能变动,就叫变量。刚才说了内存中存了1和2,那么a和b与内存中的1和2有什么联系呢,可以理解为a=1,b=2就是把内存中的1取个名字叫a,内存中的2取个名字叫b。这样按名字就能找到它的值了。
py3study
2020/01/19
2.5K0
python中的变量
python中的变量
本文介绍了Python中的变量和运算符,包括整数、浮点数、布尔数、字符串和列表等数据类型的操作和应用。同时,还介绍了Python中的字符串格式化、运算符的优先级和字符串的切片等知识点。
企鹅号小编
2017/12/28
2.8K0
python中的变量
Java中的变量
我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放置什么值不确定!
帅飞
2019/01/22
2.3K0
CSS 中的变量
在 CSS 中,有很多需要反复使用的属性值,如果每个使用的地方都直接写死这个值,而没有使用变量去定义这个值的话,后期修改起来会很麻烦。有很多人忽略了在 CSS 中也可以定义变量这个事情,相信你会爱上它 !
很酷的站长
2022/12/16
2.6K0
CSS 中的变量
less中的变量
程序员 NEO
2023/09/29
3170
less中的变量
MariaDB/MySQL中的变量
在MySQL/MariaDB中有好几种变量类型:用户自定义变量、系统变量、一般的临时变量(即本地变量,或称为局部变量)。
星哥玩云
2022/08/16
2.3K0
Sass中的变量
程序员 NEO
2023/09/29
2420
Sass中的变量
bash中的变量
bash中的变量 <span style="display: inline !important;float: none;background-color: transparent;color: rgb(51, 51, 51);font-family: " 0px;"="" sc","helvetica="" pingfang=""> 本文目录 1 局部变量与环境变量 2 设置变量 3 环境变量 局部变量与环境变量 在bash中,变量是一个用来存储数据的实体。每个变量都有一个名称和一个值,名称是变量的
mwangblog
2018/07/04
2.2K0
Shell中的变量
1.基本语法 (1)定义变量:变量=值 (2)撤销变量:unset 变量 (3)声明静态变量:readonly变量,注意:不能unset
编程那点事
2023/02/25
1.6K0
Powershell中的变量
在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。
QRosie
2019/11/24
3K0
Powershell中的变量
PHP中的变量
在PHP中变量是用于储存信息的容器,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用赋值方法与数学中的代数相类似
itclanCoder
2023/09/14
2900
PHP中的变量
python中的变量
通过上面的对比可以看到,python2中在运行赋值运算符的时候,变量始终是整型,而在python3中,变量在做除法运算符的时候会变为浮点型。
嘻哈记
2021/03/20
2K0
linux中对shell变量的使用
我有一段shell命令如下:cd /www/wwwroot/learn.gaojiufeng.cngit fetch --all git reset --hard origin/masterchmod -R 755 /www/wwwroot/learn.gaojiufeng.cnchown -R www /www/wwwroot/learn.gaojiufeng.cn很显然有很多重复的路径,我们用变量替换试试dir="/www/wwwroot/learn.gaojiufeng.cn/" && cd $
高久峰
2023/05/20
1.4K0
c# 中for和foreach循环的区别
    (2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)
vv彭
2020/10/27
4.9K0
c# 中for和foreach循环的区别
lamda中stream的forEach与for循环对比
循环大概在50000大小的时候for循环就开始慢慢运行时间大于forEach,在50000数据之前都是for循环优势。但是当我直接加到1000000大小时发现for循环的速度优势又回来了,又测试了500000发现依然是for循环优势。 所以大概率下,几万几万数据时forEach速度是领先的。小数据和极大数据下for循环领先,所以推荐使用for循环,一般业务中很少有几万数据去循环。
全栈程序员站长
2022/11/15
1.2K0
lamda中stream的forEach与for循环对比

相似问题

makefile中的变量$(MAKE)是什么?

410

如何将变量传递给Makefile中foreach函数调用的sub make?

193

如何在makefile中迭代变量中的每个文件

11

Makefile:其他makefile中不包含变量

10

理解自动变量在make/makefile中的作用

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文