我正在寻找一种干净的方法来将我在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'$'需要转义为'$$'] >>