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.
问题就在这里:
.java.class: $(JC) $(JFLAGS) src/$*.java
:
clean: $(RM) bin/*.class
这些不是规则而是命令。命令必须在它自己的行上,在行的开头有一个制表符。
.java.class:
$(JC) $(JFLAGS) src/$*.java
clean:
$(RM) bin/*.class
这并不是Makefiles和Java的所有问题,特别是这个Makefile。
既然您不知道如何管理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>