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