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.
答案 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>