Java 多个文件的 Makefile
Java Makefile for multiple files
我正在尝试为包含多个文件的 java 程序创建一个 makefile。以前,我使用这个成功地为单个文件创建了一个 makefile:
QuickSort.class: QuickSort.java
javac -g QuickSort.java
清洁:
rm -f QuickSort.class
因为我需要它编译多个文件,所以我更新了它:
Dijkstra.class:
Dijkstra3.java\
DirGraph.java
FibDijkstra.java\
FibHeap.java\
MinDijkstra.java\
MinHeap.java\
javac -g Dijkstra3.java
javac -g DirGraph.java
javac -g FibDijkstra.java
javac -g FibHeap.java
javac -g MinDijkstra.java
javac -g MinHeap.java
clean:
rm -f Dijkstra.class
当我尝试 运行 make 时,它产生了错误 "No rule to make target javac needed by Dijkstra.class"。我接近我所拥有的吗?我将如何编辑它以使其正常工作?谢谢!
编辑:重试时,我一定改变了原来的变化。现在它会生成一个所有文件的列表,并且在说命令不存在之间没有中断。显然,我没有正确地尝试读取所有文件。
编辑 2:我知道有
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
Dijkstra3.java\
DirGraph.java\
FibDijkstra.java\
FibHeap.java\
MinDijkstra.java\
MinHeap.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
当我 运行 这样做时,它不会为 makefile 产生任何错误。相反,它会为包含的文件本身产生错误。奇怪的是,在 NetBeans 中,当我将它们拉出来时没有错误?这可能是什么原因?
这是我想出的最终解决方案:
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
Dijkstra3.java\
DirGraph.java\
FibDijkstra.java\
FibHeap.java\
MinDijkstra.java\
MinHeap.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
我正在尝试为包含多个文件的 java 程序创建一个 makefile。以前,我使用这个成功地为单个文件创建了一个 makefile:
QuickSort.class: QuickSort.java
javac -g QuickSort.java
清洁: rm -f QuickSort.class
因为我需要它编译多个文件,所以我更新了它:
Dijkstra.class:
Dijkstra3.java\
DirGraph.java
FibDijkstra.java\
FibHeap.java\
MinDijkstra.java\
MinHeap.java\
javac -g Dijkstra3.java
javac -g DirGraph.java
javac -g FibDijkstra.java
javac -g FibHeap.java
javac -g MinDijkstra.java
javac -g MinHeap.java
clean:
rm -f Dijkstra.class
当我尝试 运行 make 时,它产生了错误 "No rule to make target javac needed by Dijkstra.class"。我接近我所拥有的吗?我将如何编辑它以使其正常工作?谢谢!
编辑:重试时,我一定改变了原来的变化。现在它会生成一个所有文件的列表,并且在说命令不存在之间没有中断。显然,我没有正确地尝试读取所有文件。
编辑 2:我知道有
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
Dijkstra3.java\
DirGraph.java\
FibDijkstra.java\
FibHeap.java\
MinDijkstra.java\
MinHeap.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
当我 运行 这样做时,它不会为 makefile 产生任何错误。相反,它会为包含的文件本身产生错误。奇怪的是,在 NetBeans 中,当我将它们拉出来时没有错误?这可能是什么原因?
这是我想出的最终解决方案:
JFLAGS = -g
JC = javac
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
Dijkstra3.java\
DirGraph.java\
FibDijkstra.java\
FibHeap.java\
MinDijkstra.java\
MinHeap.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class