java 的 make 文件有问题

发布于 2024-12-07 17:06:36 字数 453 浏览 0 评论 0原文

JFLAGS = -d bin -cp lib/slick.jar:lib/lwjgl.jar

JC = javac

.SUFFIXES: .java .class

.java.class: $(JC) $(JFLAGS) src/$*.java

CLASSES = \
          Game.java \
          Block.java \
          BlockMap.java \

default: classes

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

clean: $(RM) bin/*.class

我的源文件位于 src/ 中,我希望编译后的文件位于 bin/ 中。当我运行 make 时,它​​给了我这个错误

makefile:7: *** multiple target patterns.  Stop.
JFLAGS = -d bin -cp lib/slick.jar:lib/lwjgl.jar

JC = javac

.SUFFIXES: .java .class

.java.class: $(JC) $(JFLAGS) src/$*.java

CLASSES = \
          Game.java \
          Block.java \
          BlockMap.java \

default: classes

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

clean: $(RM) bin/*.class

My source files are in src/ and I want to the compiled files to be in bin/ . When I run make, it gives me this error

makefile:7: *** multiple target patterns.  Stop.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涙—继续流 2024-12-14 17:06:36

问题在这里:

.java.class: $(JC) $(JFLAGS) src/$*.java

在这里:

clean: $(RM) bin/*.class

这些不是规则,而是命令。并且命令必须位于其自己的行中并且在行的开头有一个制表符

.java.class: 
    $(JC) $(JFLAGS) src/$*.java

clean: 
    $(RM) bin/*.class

并不是说这些都是 Makefile 和 Java 的问题,特别是这个 Makefile 的问题。

The problem is here:

.java.class: $(JC) $(JFLAGS) src/$*.java

and here:

clean: $(RM) bin/*.class

These are no rules but commands. And commands must be on its own lines with a tab at the beginning of the line.

.java.class: 
    $(JC) $(JFLAGS) src/$*.java

clean: 
    $(RM) bin/*.class

Not that this are all problems with Makefiles and Java in general and this Makefile in particular.

趁年轻赶紧闹 2024-12-14 17:06:36

由于您不知道如何管理 Makefile,因此没有理由使用更好的工具。这是一个可以完成这项工作的最小 Ant 文件。而且由于 Ant 是为 Java 设计的,因此 Make 的大多数目录处理问题根本不存在。

作为奖励,您可以向任何 Java 开发人员寻求更多帮助。如今,Java 开发人员和 Makefile 专家是相当罕见的组合。

<project name="Game" default="classes">
    <target name="classes">
        <mkdir dir="bin" />
        <javac srcdir="src" destdir="bin" 
            classpath="lib/slick.jar;lib/lwjgl.jar"
            includeantruntime="false"/>
    </target>
    <target name="clean">
        <delete dir="bin" />
    </target>
</project>

Since you don't know how to manage a Makefile there is no reason NOT to use a better tool. Here is a minimal Ant file which should do the job. And because Ant is designed for Java, most of the directory handling problems of Make simply don't exist.

As a bonus you can ask any Java developer for more help. Java developers and Makefile experts are a quite uncommon match in these days.

<project name="Game" default="classes">
    <target name="classes">
        <mkdir dir="bin" />
        <javac srcdir="src" destdir="bin" 
            classpath="lib/slick.jar;lib/lwjgl.jar"
            includeantruntime="false"/>
    </target>
    <target name="clean">
        <delete dir="bin" />
    </target>
</project>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文