Java Makefile per più file


Sto cercando di creare un makefile per il mio programma java che incorpora più file. In precedenza, ho avuto successo nella creazione di un makefile per un singolo file usando questo:

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

Pulito: rm-f QuickSort.classe

Poiché ho bisogno di compilare più file, l'ho aggiornato in questo modo:

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

Quando provo a eseguire make su questo, produce l'errore "Nessuna regola per rendere il target javac necessario a Dijkstra.classe". Sono vicino in quello che ho? Come farei a modificarlo per fare funziona correttamente? Grazie!

EDIT: Quando si riprova, devo aver cambiato qualcosa dalla variazione originale. Ora produce un elenco di tutti i file senza interruzione tra il dire che il comando non esiste. Ovviamente allora, non sto cercando correttamente di leggere tutti gli archivi.

MODIFICA 2: so di avere

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

Quando eseguo questo, non produce errori per il makefile. Invece produce errori per i file inclusi stessi. Ciò che è strano in questo è, che in NetBeans, quando li ho tirati su non ci sono errori? Quale potrebbe essere la causa di questo?

Author: user3068177, 2016-03-30

1 answers

Ecco la soluzione finale che ho trovato:

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