所以我不是Makefiles的最佳人选。我是一个新的,并试图了解目标和依赖关系如何工作等。基本上,这是我的Makefile现在:
SRC=src/
BIN=bin/
PPWD=../
JC=javac
JC_FLAGS=
JVM=java
JVM_FLAGS= -classpath $(BIN)
BINARY=NuText
RM_FLAGS=rm -rf
default: $(SRC)*.java
$(JC) $(JC_FLAGS) $(SRC)*.java
mv $(SRC)*.class $(BIN)
new: clean default
run: new
$(JVM) $(JVM_FLAGS) $(BINARY)
clean:
$(RM_FLAGS) $(BIN)*.class
问题在于,当我想运行我的程序时,它会在我使用make run
的每一次编译时,如果我想要运行的.class
文件更旧,我只希望它编译而不是.java
目录中的src/
个文件。我如何设置我的依赖项,以便它只编译程序(即使用new
目标)如果.java
文件比.class
文件中的bin/
文件更新1}?谢谢你的帮助!
编辑:感谢Etan和Joe的帮助!我把它编辑成以下工作:
SRC=src/
BIN=bin/
JC=javac
JC_FLAGS=
JVM=java
JVM_FLAGS= -classpath $(BIN)
BINARY=NuText
RM_FLAGS=rm -rf
default: $(SRC)*.java
$(JC) $(JC_FLAGS) $(SRC)*.java
mv $(SRC)*.class $(BIN)
new: clean default
run: $(BIN)$(BINARY).class
$(JVM) $(JVM_FLAGS) $(BINARY)
$(BIN)$(BINARY).class: $(SRC)*.java
make new
clean:
$(RM_FLAGS) $(BIN)*.class