【发布时间】:2020-01-03 01:25:45
【问题描述】:
我正在寻找一种干净的方法来将我在 makefile 中创建的一些目标声明更改为更具功能性的类型声明,在该声明中我能够传递变量并且输出将保持一致。
例如:
default: clean run1 run2
run1:
for entity in $(FLIST_01); do \
echo $entity ; \
done
run2:
for entity in $(FLIST_02); do \
echo $entity ; \
done
理想情况下,我想删除重复的运行目标声明,并且只有 1 个。
FLIST_01 = my_flist.txt
FLIST_02 = other.txt
default: clean run
run:
$(run_func $(FLIST_01))
$(run_func $(FLIST_02))
如何在make 中创建自定义函数来执行 run_func 应该执行的操作(传递给它的文件列表变量的 for 循环读取?
更新:
到目前为止我的尝试是这样的:
run:
runfunc() { \
echo "test" \
for entity in $1; do \
echo $(entity); \
done \
}
runfunc $(FLIST_01)
runfunc $(FLIST_02)
但我在 do 行出现语法错误:意外标记 `do' 附近出现语法错误
【问题讨论】:
标签: shell makefile sh gnu-make