我读的GNU制作的文档。 下面是一个例子
%.D:%.C
@set -e; rm -f $@; \ $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$
我想这在C ++程序,并得到了文件列表
init3d.d init3d.d.18449 input.d input.d.18444 main.d main.d.18439
以下是我发现的,但同样在不了解文件
如果已经启用二次扩张和你想在先决条件列表中的文字美元符号,你必须真正写四篇美元符号(“$$$$”)。
我不知道这四个美元符号“$$$$”,其实是什么意思? 他们如何18449,18444或18439?
感谢致敬!
如果启用使“二次扩张”, $$$$
需要以产生一个$
实际输出。 $
通常用来扩展变量,调用make功能等$$
启用了二次扩张做别的事情,但除此之外,它产生的实际$
输出。
使该壳用来执行对类Unix系统的命令行解释正常$$
作为扩大到外壳进程ID。 所以,无需二次膨胀启用, $$$$
会变成$$
在输出中,其中壳将扩大到的进程ID。
(使用shell进程ID作为后缀的努力,以保证文件名的唯一性临时文件的简单方式。)
$$
将被转换为$
,但在Makefile的规则(这是壳表达式),你必须也难逃导致$
使用\
或使用单引号'
在你的表达。
下面是一个说明它的一个例子:
DOLLAR:=$$
dollar:
echo '$$' > $@
echo "\$$" >> $@
echo '$(DOLLAR)' >> $@
echo "\$(DOLLAR)" >> $@
cat dollar
18449,18444或18439的样子进程ID,所以也许一个进程ID?