在makefile中嵌套For循环

时间:2015-06-20 12:33:32

标签: shell makefile

我试图通过makefile遍历特定目录中的.c文件。

我使用了以下代码,但似乎无效:

DIR= Sources \
     Sources_2

@for entry in ${DIR} ;                  \
do                                         \
    @for i in $${entry}/*.c ;                \
    do                                     \
        echo "Processing $${i}";             \
        #Building Commands go here
    done                                   \
done

我收到错误:“/ bin / sh:-c:第3行:意外令牌附近的语法错误`do'”

2 个答案:

答案 0 :(得分:1)

更改Makefile,如下所示

@for entry in ${DIR} ; do            \
    for i in $$entry/*.c ; do     \
        echo "Processing $$i";     \
        #Building Commands go here
    done                              \
done

for循环语法使用错误的原因。

答案 1 :(得分:0)

您不应该在第二个@循环附近的符号for处使用。应在整个shell命令的开头使用@。以下对我有用:

DIR= Sources \
     Sources_2

all:
    @for entry in ${DIR};                   \
    do                                      \
        for i in $${entry}/*.c;             \
        do                                  \
            echo "Processing $${i}";        \
        done                                \
    done