我如何将Makefile目标更改为函数?

问题描述 投票:0回答:1

我正在寻找一种干净的方法来将我在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
1个回答
0
投票

每个shell'$'需要转义为'$$'] >>

    $(...)构造在shell与Make中的含义不同。
© www.soinside.com 2019 - 2024. All rights reserved.