GNU如何制作"文件"功能工作?

时间:2015-06-11 23:25:48

标签: gnu-make gnu

我想我可能需要在GNU make中使用文件函数,而不能按照他们给出的示例。我在网上看过,但没有看到任何更多解释的帖子。以下是他们给出的例子:

program: $(OBJECTS)
$(file >$@.in,$^)
$(CMD) $(CMDFLAGS) @$@.in
@rm $@.in

我认为我知道它在高级别做了什么,正如手册中所解释的那样。

$@.in 

是所有目标文件的列表

$^ 

是源文件列表

我不确定第三行如何使用@$@.in或者在开头有什么@符号。这意味着什么?该怎么办?

1 个答案:

答案 0 :(得分:0)

该食谱操作的关键在the manual前面的散文中给出:

  

许多命令使用以下约定:前缀为@的参数指定包含更多参数的文件。然后你可以用这种方式写你的食谱:

program: $(OBJECTS)
    $(file >$@.in,$^)
    $(CMD) $(CMDFLAGS) @$@.in
    @rm $@.in
  • $@是目标文件(任何给定食谱中只有一个)

  • $@.in是目标文件,其中.in已添加到名称的末尾。

  • $^是目标所有先决条件的“列表”。

  • @$@.in是目标的名称,最后为.in,开头为@

因此,该配方中的$(file ...)调用将目标的先决条件列表写入“覆盖”模式中名为program.in的文件中,然后将该文件名传递给$(CMD)命令使用提到的@filename约定。