【问题标题】:What's the meaning of default: classes in this makefile?默认:这个makefile中的类是什么意思?
【发布时间】:2016-04-23 23:32:00
【问题描述】:

对此的注释是“默认生成目标条目”。 有人可以在这条线上解释更多吗? 为什么我们在这里使用“默认”而不是“全部”?我可以将名称更改为我想要的任何名称吗? 谢谢!

JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
        $(JC) $(JFLAGS) $*.java

CLASSES = \
        Foo.java \
        Blah.java \
        Library.java \
        Main.java 

default: classes

classes: $(CLASSES:.java=.class)

clean:
        $(RM) *.class

【问题讨论】:

  • 我们非常希望您在问题中包含您的代码,而不是链接到它(并且尤其是而不是链接到 .png文件,这意味着我们不能复制和粘贴来自己尝试)。您的文件只有 18 行,这远低于我们开始认为有人发布了太多代码时的阈值。
  • @ajb 已经更新。对此感到抱歉。

标签: java linux unix makefile gnu-make


【解决方案1】:

“默认”这个词的意思是“隐含的”,或者“如果没有给出的话”。在 makefile 中,如果您调用

>make

如果没有明确说明目标,则生成文件中的第一个目标(以. 开头的目标除外)将被更新。因此,将第一个此类目标称为“默认”是有意义的。是的,如果您想混淆所有人,可以将其更改为其他内容。

但是,按照 Make 手册的约定,第一个目标的名称应该是 all。所以alldefault 好,后者比其他任何东西都好。

此外,“默认生成目标条目”是一个糟糕的评论。正确的术语是“制定目标”,用“默认”来评论一个名为default 的目标是浪费字符:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多