Δημοσιεύτηκε: 23 Ιουν 2011, 21:18
από simosx
1. Το makefile έχει εντολές όπου επιτρέπουν να μεταγλωττίζουμε ένα πρόγραμμα πιο εύκολα.
Για παράδειγμα
Κώδικας: Επιλογή όλων
ExampleQuit.class: ExampleQuit.java
      javac -cp /usr/share/java/gtk.jar ExampleQuit.java

run:
      java -cp /usr/share/java/gtk.jar:. ExampleQuit

από https://github.com/giannosfor/ExampleQu ... r/Makefile

Οι πρώτες δύο εντολές πάνε μαζί:

Κώδικας: Επιλογή όλων
ExampleQuit.class: ExampleQuit.java
          javac -cp /usr/share/java/gtk.jar ExampleQuit.java


Είναι ο πρώτος κανόνας, οπότε όταν τρέξουμε σκέτο make, το πρόγραμμα make θα ψάξει για ένα αρχείο Makefile στον τρέχον κατάλογο
και θα προσπαθήσει να παράγει το «ExampleQuit.class» (επειδή είναι πρώτο, πριν από : ).
Το ExampleQuit.class: ExampleQuit.java
σημαίνει ότι το ExampleQuit.class εξαρτάται από το ExampleQuit.java. Απαιτεί να υπάρχει το ExampleQuit.java. Αν η ημερομηνία του ExampleQuit.java είναι νεότερη από το ExampleQuit.class, τότε εκτελεί την εντολή, και η εντολή είναι αυτό που αναφέρεται στην επόμενη γραμμή.

Η εντολή είναι πάντα με εσοχή (προς τα δεξιά) με ένα χαρακτήρα Tab. Μερικοί χρήστες βάζουν διάστημα (space) και αυτό είναι σφάλμα. Το make παραπονιέται για separator, κτλ.
Κώδικας: Επιλογή όλων
run:
      java -cp /usr/share/java/gtk.jar:. ExampleQuit


Εδώ φτιάχνουμε ένα ιδεατό στόχο, το run. Οπότε, αν τρέξουμε
Κώδικας: Επιλογή όλων
make run

θα εκτελέσει την εντολή, που είναι η γραμμή που εκτελεί το πρόγραμμά μας.

Μια βελτίωση στο παραπάνω είναι να γράψουμε
Κώδικας: Επιλογή όλων
run: ExampleQuit.class
      java -cp /usr/share/java/gtk.jar:. ExampleQuit


οπότε εδώ θα δει αν υπάρχει το ExampleQuit.class. Αν δεν υπάρχει, θα χρησιμοποιήει τον πρώτο κανόνα και θα μεταγλωττίσει,
και μετά θα τρέξει το πρόγραμμα.