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
3
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