我想我可能需要在GNU make中使用文件函数,而不能按照他们给出的示例。我在网上看过,但没有看到任何更多解释的帖子。以下是他们给出的例子:
program: $(OBJECTS)
$(file >$@.in,$^)
$(CMD) $(CMDFLAGS) @$@.in
@rm $@.in
我认为我知道它在高级别做了什么,正如手册中所解释的那样。
$@.in
是所有目标文件的列表
$^
是源文件列表
我不确定第三行如何使用@$@.in
或者在开头有什么@
符号。这意味着什么?该怎么办?
答案 0 :(得分:0)
该食谱操作的关键在the manual前面的散文中给出:
许多命令使用以下约定:前缀为@的参数指定包含更多参数的文件。然后你可以用这种方式写你的食谱:
program: $(OBJECTS) $(file >$@.in,$^) $(CMD) $(CMDFLAGS) @$@.in @rm $@.in
$@
是目标文件(任何给定食谱中只有一个)
$@.in
是目标文件,其中.in
已添加到名称的末尾。
$^
是目标所有先决条件的“列表”。
@$@.in
是目标的名称,最后为.in
,开头为@
。
因此,该配方中的$(file ...)
调用将目标的先决条件列表写入“覆盖”模式中名为program.in
的文件中,然后将该文件名传递给$(CMD)
命令使用提到的@filename
约定。