Java Makefile " Nessuna regola per rendere target"


Sto cercando di scrivere un makefile per il mio programma java. Ho provato a cercare online e questo è quello che ho trovato.

JFLAGS = -g

JC = javac

JVM = java

FILE=

.SUFFIXES: .java .class

.java.class:

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

CLASSES = banker.java

MAIN = Main

default: classes

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

run: classes
    $(JVM) $(MAIN)

Sto ricevendo un errore che dice

No rule to make target 'banker.class', needed by 'classes'. Stop.

Ho solo una classe: banker.java

Author: jynx678, 2015-12-02

1 answers

Sembra banchiere.java non si trova nella stessa directory del Makefile.

In caso contrario, è necessario invece dire: "CLASSES = relative/path/to/banker.java"

Quindi, ad esempio, se hai una struttura di directory come questa:

MyProject
   -jsrc
     -banker.java
   -jbin
   -Makefile

E il tuo banchiere.java è in MyProject / jsrc, quindi è necessario modificare

CLASSES = banker.java

Essere

CLASSES = jsrc/banker.java

E, a meno che non si desidera che il .file di classe per essere anche in jsrc, è necessario modificare

$(JC) $(JFLAGS) $*.java
Da

A

$(JC) -d $(JCLASSDIR)/. $(JFLAGS) $*.java

E aggiungere

JCLASSDIR=jbin

In alto

JFLAGS = -g

JC = javac

JCLASSDIR=jbin

JVM = java

FILE=

.SUFFIXES: .java .class

.java.class:

        $(JC) -d $(JCLASSDIR)/. $(JFLAGS) $*.java

CLASSES = jsrc/banker.java

MAIN = Main

default: classes

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

run: classes
    $(JVM) $(MAIN)
 0
Author: wizurd, 2015-12-02 19:58:08