【问题标题】:Java Makefile for multiple files用于多个文件的 Java Makefile
【发布时间】:2016-03-30 01:16:06
【问题描述】:

我正在尝试为我的 java 程序创建一个包含多个文件的 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 required 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 中,当我将它们拉起时,没有错误?这可能是什么原因?

【问题讨论】:

  • 就我个人而言,我会看看 Ant 和/或 Maven 或任何其他构建系统,因为这将有助于提高您的一般技能并帮助您从命令行了解构建过程
  • MinHeap.java 后不应该有 `\`
  • 另外,如果您使用 maven,它可以自动为您下载插件和依赖项。

标签: java file makefile javac


【解决方案1】:

这是我想出的最终解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多