2

我正在尝试了解makefile,主要是为了了解我正在使用的makefile,但是却被一些可能很简单的东西所迷惑。我的 makefile 中让我感到困惑的部分如下所示:

SUBS = dir1 dir2 dir3

depend clean:
         @-X=`pwd`;\
         for i in $(SUBS);\
         cd $$X/$$i;\
         done

"@-X=pwd是做什么的?我认为它以某种方式将当前目录的值分配给 X,但我不知道如何阅读 "@-" 语法。

另外,为什么 X & i 需要在前面加上 '$$' 而不仅仅是 '$'?我已经通过实验验证了两个 $ 都是必需的,但我认为只需要一个就可以将每个 $ 替换为它们的值

4

1 回答 1

3

我不知道如何阅读“@-”语法。

只需从左到右阅读 :-) 开个玩笑,行首的“@”告诉 make 在执行之前不要回显该行;“-”告诉它忽略错误

X & i 需要在前面加上'$$' 而不是'$'?

因为 make 本身有通过 $ 访问的变量,但是在这种情况下规则使用 shell 变量,这些变量也可以通过 $ 访问。$$ 只是一个转义,因此执行的 shell 命令包含 $X,而不是可能为空的 makefile 变量 X 的内容。

于 2012-07-07T21:30:21.880 回答