在Makefile中,我看到了以下内容:
all: .made
# ... some other code
.made: $(Program) bashbug
@echo "$(Program) last made for a $(Machine) running $(OS)" >.made
该.made
规则是否为https://www.gnu.org/software/make/manual/make.html#Suffix-Rules的后缀规则?
另外,目标的所有规则都具有.
后缀规则吗?
否则,以。开头的目标的意义是什么?似乎在https://www.gnu.org/software/make/manual/make.html#How-Make-Works中具有上述意义:
默认情况下,make从第一个目标开始(不是名称以“。”开头的目标)。
但是没有提到它的意义。
另外,如果这是一个后缀规则,那么怎么.made
可以用作all规则的前提条件?(没有提到后缀规则的目标可以用作其他规则的先决条件。)
PS:这个问题与的含义有关,但含义不同。(点)在makefile中的目标之前。该问题明确要求与的目标之间的区别。和后缀规则的目标。
该
.made
规则是后缀规则吗
不,因为.made
不是“已知后缀”。
另外,目标的所有规则都具有
.
后缀规则吗?
不,仅那些点后单词为“已知后缀”的单词:
您的前两个问题可以通过https://www.gnu.org/software/make/manual/make.html#Suffix-Rules回答:
通过将每个规则的目标与已定义的已知后缀列表进行比较,可以识别后缀规则定义。当
make
看到目标是已知后缀的规则时,该规则被视为单后缀规则。当make
看到目标是两个已知后缀串联的规则时,该规则将被视为双后缀规则。
在您的示例中.made
是一个实际的文件名。Makefile具有为其创建/更新文件的规则:
#vvvv
.made: $(Program) bashbug
@echo "$(Program) last made for a $(Machine) running $(OS)" >.made
# ^^^^^
一切都很正常;它与任何其他名称的工作方式相同。
前导点的唯一含义是按照约定使文件“隐藏”,即ls
不显示(不指定-a
),普通显示*
不匹配等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句