【问题标题】:make: Nothing to be done for 'makefile'make: 'makefile' 无事可做
【发布时间】:2013-11-16 15:31:20
【问题描述】:

我尝试学习为 java 项目创建 makefile。我写了一个基本类作为Hello.java。然后我写了一个makefile如下:

makefile:
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
%.class: %.java
    $(JC) $(JFLAGS) $^

CLASSES = \
     Hello.java

default: classes

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

clean:
    $(RM)*.class

当我尝试在 cygwin 上运行此文件并键入 make -f makefile 时,我收到类似的错误:make:Nothing to be done for 'makefile'。我该如何解决这个问题?

【问题讨论】:

    标签: java makefile


    【解决方案1】:

    如果您运行不带参数的 make,它会尝试重建它在 makefile 中找到的第一个目标。

    makefile 的第一行是:

    makefile:
    

    它定义了一个目标makefile...所以如果你在没有参数的情况下运行make,它将尝试构建makefile目标。没有更新 makefile 目标的规则,并且该文件存在,因此 make 声明它是最新的并且无需更新它。

    我完全不知道你为什么有那行,但无论如何你需要确保你的makefile中的第一个目标是你在运行make时想要构建的目标;在这里,您似乎希望default 成为第一个。

    【讨论】:

      【解决方案2】:

      我不确定,但我认为您需要在“默认:类”下方添加类似“javac blabla.java”的内容

      【讨论】:

      • 我输入了“javac Hello.java”(不在引号中),它给出了一个错误,因为缺少分隔符。然后我搜索了这个错误,每个人都说你应该输入tab,但我输入了tab,它给出了同样的错误。
      • 曾经发生在我身上的一件事是 Xcode 编辑器自动将制表符更改为空格。
      【解决方案3】:

      我遇到了同样的错误消息make: Nothing to be done for 'makefile'

      就我而言,问题在于makefile 目录中存在一个具有目标名称的目录。更改目标的名称解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多