Java Makefile " Pas de règle pour faire une cible"


J'essaie d'écrire un makefile pour mon programme java. J'ai essayé de regarder en ligne et c'est ce que j'ai trouvé.

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)

Je reçois une erreur qui dit

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

Je n'ai qu'une seule classe: banquier.java

Author: jynx678, 2015-12-02

1 answers

On dirait banquier.java n'est pas dans le même répertoire que le Makefile.

Sinon, vous devez plutôt dire: "CLASSES = relatif/chemin/vers/banquier.java "

Donc, par exemple, si vous avez une structure de répertoire comme celle-ci:

MyProject
   -jsrc
     -banker.java
   -jbin
   -Makefile

Et votre banquier.java est dans MyProject / jsrc, alors vous devez changer

CLASSES = banker.java

Être

CLASSES = jsrc/banker.java

Et, sauf si vous voulez le .les fichiers de classe pour être également dans jsrc, vous devez changer

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

À

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

Et ajouter

JCLASSDIR=jbin

En haut

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