制作:多个$符号

时间:2011-04-02 12:56:26

标签: makefile

4.14自动生成先决条件部分GNU make manual

 %.d: %.c
         @set -e; rm -f $@; \
          $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \
          sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
          rm -f $@.$$$$

$$$$是什么意思?

另外,在一本书中,我正在读取一个make文件中的食谱:

    $(AWK) '...                       \
      {                               \
       print "Killing " $$3;          \
       system( "$(KILL) -f " $$1 )    \
      }'

因为它是一个awk程序所以引用了整个事情。我替换了配方的其余部分...为什么它使用$$而不是$

任何提示都表示赞赏。感谢。

1 个答案:

答案 0 :(得分:4)

$对shell和make都有意义,而awk。如果你想要非make语义,你必须加倍以避免make语义。

第二个例子很简单:它只是$1$3的awk语义。

第一个是$$的shell语义。 $$是:

$$
Process ID (PID) of the script itself. [5] The $$ variable often finds use in scripts to
construct "unique" temp file names (see Example 31-6, Example 16-31, 
and Example 15-27). This is usually simpler than invoking mktemp.

获取快速报价。