有问题的make文件为java

时间:2011-10-01 15:40:40

标签: java ant makefile

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.

2 个答案:

答案 0 :(得分:2)

问题在于:

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

在这里:

clean: $(RM) bin/*.class

这些不是规则而是命令。并且命令必须在其自己的行上,行的开头有一个标签

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

clean: 
    $(RM) bin/*.class

这并不是Makefiles和Java的一般问题,尤其是这个Makefile。

答案 1 :(得分:2)

由于您不知道如何管理Makefile,因此没有理由 NOT 使用更好的工具。这是一个应该完成这项工作的最小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>