Makefiles中的%是如何工作的?
我试图理解makefile是如何工作的。如果我尝试以下方法Makefiles中的%是如何工作的?,makefile,Makefile,我试图理解makefile是如何工作的。如果我尝试以下方法 1.out : 1.inp cat 1.inp 它按预期工作(如果1.inp更新为1.out,或者如果1.out不存在,则打印1.inp的内容) 然后,我需要执行以下操作: cat 1.inp cat 2.inp cat 3.inp 我想我可以用这个 %.out : %.inp cat $< %.out:%.inp 猫$< 但它不起作用。有谁能向我解释一下在你的第一个makefile中使用%?: 1.out
1.out : 1.inp
cat 1.inp
它按预期工作(如果1.inp更新为1.out,或者如果1.out不存在,则打印1.inp的内容)
然后,我需要执行以下操作:
cat 1.inp
cat 2.inp
cat 3.inp
我想我可以用这个
%.out : %.inp
cat $<
%.out:%.inp
猫$<
但它不起作用。有谁能向我解释一下在你的第一个makefile中使用
%
?:
1.out: 1.inp
cat 1.inp
%.out: %.inp
cat $<
1.out
是具有先决条件1.inp
和命令cat 1.inp
的目标。这就构成了一条规则
生成1.out
,如果运行makefile,指定没有明确的目标或目标1.out
,则
规则将被执行
在第二个makefile中:
1.out: 1.inp
cat 1.inp
%.out: %.inp
cat $<
在这种情况下,当1时,1.inp
将被cat
-ed。inp
比1.out
或者,您可以在生成文件中指定一个虚假目标,例如all
,该目标的先决条件为1.out
,2.out
,3.out
,如下所示:
%.out: %.inp
cat $<
1.out:
.PHONY: all
%.out: %.inp
cat $<
all: 1.out 2.out 3.out
。假冒:全部
%.out:%.inp
猫$<
全部:1.出局2.出局3.出局
在这种情况下,1.inp
、2.inp
和3.inp
中的每一个都将在其比相应的.out
文件更新时被cat
-ed
每当make发现它必须将表单something.out作为目标时,它将识别模式规则是适用的,并将执行模式规则的匹配实例。在第一个make文件中:
1.out: 1.inp
cat 1.inp
%.out: %.inp
cat $<
1.out
是具有先决条件1.inp
和命令cat 1.inp
的目标。这就构成了一条规则
生成1.out
,如果运行makefile,指定没有明确的目标或目标1.out
,则
规则将被执行
在第二个makefile中:
1.out: 1.inp
cat 1.inp
%.out: %.inp
cat $<
在这种情况下,当1时,1.inp
将被cat
-ed。inp
比1.out
或者,您可以在生成文件中指定一个虚假目标,例如all
,该目标的先决条件为1.out
,2.out
,3.out
,如下所示:
%.out: %.inp
cat $<
1.out:
.PHONY: all
%.out: %.inp
cat $<
all: 1.out 2.out 3.out
。假冒:全部
%.out:%.inp
猫$<
全部:1.出局2.出局3.出局
在这种情况下,1.inp
、2.inp
和3.inp
中的每一个都将在其比相应的.out
文件更新时被cat
-ed
每当make发现它必须将表单something.out作为目标时,它将识别模式规则是适用的,并将执行模式规则的匹配实例。您想了解
%
,或者是否要打印新的inp
文件的内容?是否要理解%
,或者是否要打印新的inp
文件的内容?您还可以直接在命令行上指定感兴趣的目标:make 1.out 2.out 3.out
将生成所需的输出,而无需在Makefile
中添加任何内容。您还可以直接在命令行上指定感兴趣的目标:make 1.out 2.out 3.out
将生成所需的输出,而无需在make文件中添加任何内容