【问题标题】:How to compile with a specified target using Makefile in Java?如何在 Java 中使用 Makefile 编译指定目标?
【发布时间】:2020-11-09 14:26:34
【问题描述】:

我正在尝试为我的 java 项目编写一个 Makefile。我的目标是:

1.用目标make-java编译

2.使用目标run-java运行

我在网上看到了这个 Makefile 的例子:

  JFLAGS = -g
    JC = javac
    
    .SUFFIXES: .java .class
    
    .java.class:
        $(JC) $(JFLAGS) $*.java
    
    
    CLASSES = \
              Main.java \
              Book.java \
              Library.java 
    
    default: classes
    
    classes: $(CLASSES:.java=.class)
    
    clean:
        $(RM) *.class
        
    run-java:
        java Main

当我尝试更改时,我的问题是 make-java 目标(第一个选项):

.java.class:
        $(JC) $(JFLAGS) $*.java

make-java:
        $(JC) $(JFLAGS) $*.java

它不起作用。你能给我一个关于如何更改它以便使用以下命令进行编译的解决方案:make make-java

谢谢

【问题讨论】:

    标签: java makefile compilation


    【解决方案1】:

    您无法更改该规则。那是suffix rule;它基本上是一个模板,上面写着“这是从 .java 文件构建 .class 文件的方法”。 .java .class.SUFFIXES 设置和具有特殊形式 .java.class 的规则的组合具有此效果。

    如果你改变它,你会删除 make 对如何构建 .class 文件的理解。

    您想保留它并添加它:

    make-java: classes
    

    告诉 make 它应该在调用 make make-java 时构建所有 .class 文件。

    【讨论】:

      最近更新 更多