Java Makefile pour plusieurs fichiers


J'essaie de créer un makefile pour mon programme java qui incorpore plusieurs fichiers. Auparavant, j'avais réussi à créer un makefile pour un seul fichier en utilisant ceci:

QuickSort.class:    QuickSort.java
javac -g QuickSort.java

Nettoyer: rm-f QuickSort.classe

Puisque j'ai besoin de compiler plusieurs fichiers, je l'ai mis à jour comme ceci:

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

Lorsque j'essaie d'exécuter make sur cela, cela produit l'erreur "Pas de règle pour rendre javac cible nécessaire par Dijkstra.classe". Suis-je près à ce que j'ai? Comment pourrais - je le modifier pour le faire cela fonctionne correctement? Merci!

EDIT: En réessayant, j'ai dû changer quelque chose de la variation originale. Maintenant, il produit une liste de tous les fichiers sans interruption entre dire que la commande n'existe pas. Évidemment, je n'essaie pas correctement de lire tous les fichiers.

EDIT 2: Je sais avoir

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

Lorsque je lance ceci, il ne produit aucune erreur pour le makefile. Au lieu de cela, il produit des erreurs pour les fichiers inclus eux-mêmes. Ce qui est bizarre c'est que dans NetBeans, quand je les ai tirés il n'y a pas d'erreurs? Ce qui pourrait être la cause de cela?

Author: user3068177, 2016-03-30

1 answers

Voici la solution finale que j'ai trouvée:

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
 0
Author: user3068177, 2016-03-30 01:54:29