java makefile不执行run命令

时间:2013-09-18 18:25:11

标签: java makefile

我在项目中创建了一个makefile。

JFLAGS = -g
JC = javac
JVM= $(JAVA_HOME)/bin/java
.SUFFIXES: .java .class
.java.class: ; $(JC) $(JFLAGS) $*.java

 CLASSES = \
    Class1.java \
    Class2.java \
    Main.java

 MAIN = Main

 default: classes

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

 run : classes $(JVM) $(MAIN).class

下面的代码运行并编译我的java类但不执行我的run命令。 完成make文件并且不执行我的运行.. 为什么我的代码出错?

2 个答案:

答案 0 :(得分:3)

您需要将“run”命令添加为“run”目标的操作,而不是先决条件:

run : classes
        $(JVM) $(MAIN)
#make sure the line above begins with a tab

答案 1 :(得分:0)

Make只会尝试在makefile中构建第一个目标(以及该目标的所有先决条件,以及这些目标的所有先决条件等)。选择不同的或多个顶级目标(或“目标目标“)您可以在命令行上指定它们:make run

您可以将run目标移动到makefile中的第一个目标,然后默认运行它。

或者,如果您要运行多个“顶级”目标,则可以在另一个规则中收集它们;例如,在上面你可以使用:

default: classes run

虽然通过长期惯例,这个目标被命名为all(但这只是一个惯例)。