Πώς λειτουργεί το GTK-Doc;
Το GTK-Doc χρησιμοποιεί την τεκμηρίωση συναρτήσεων που έχει συμπεριληφθεί στα πηγαία αρχεία (εντός μπλοκ σχολίων με ειδική μορφή), ή την τεκμηρίωση που έχει προστεθεί στα πρότυπα αρχεία που χρησιμοποιεί το GTK-Doc (σημειώστε όμως ότι το GTK-Doc παράγει τεκμηρίωση μόνο για τις συναρτήσεις που δηλώνονται σε αρχεία κεφαλίδας· δεν παράγει τεκμηρίωση για στατικές συναρτήσεις).
Το GTK-Doc αποτελείται από μια σειρά από σενάρια perl , καθένα από τα οποία είναι υπεύθυνο για διαφορετικό στάδιο της όλης διαδικασίας.
Η διαδικασία περιλαμβάνει 5 κύρια στάδια:
-
Συγγραφή της τεκμηρίωσης Ο συγγραφέας συμπληρώνει τα πηγαία αρχεία με τεκμηρίωση για όλες τις συναρτήσεις, μακροεντολές, ενώσεις κτλ. (Στο παρελθόν, οι πληροφορίες συμπληρώνονταν σε πρότυπα αρχεία που παράγονταν αυτόματα, αλλά αυτός ο τρόπος δεν συνιστάται πλέον.)
-
Συλλέγοντας πληροφορίες σχετικά με τον κώδικα. Το gtkdoc-scan σαρώνει τα αρχεία κεφαλίδων του κώδικα ψάχνοντας για δηλώσεις συναρτήσεων, μακροεντολές, enums, δομές και ενώσεις. Δημιουργεί το αρχείο <module>-decl-list.txt που περιέχει μια λίστα με τις δηλώσεις, και τις τοποθετεί σε ενότητες αναλόγως με το αρχείο κεφαλίδας που βρίσκονται. Από την πρώτη εκτέλεση του προγράμματος το αρχείο αντιγράφεται στο <module>-sections.txt. Ο συγγραφέας μπορεί να τακτοποιήσει τις ενότητες και τη σειρά των δηλώσεων, για να παράξει το επιθυμητό τελικό αποτέλεσμα. Το δεύτερο αρχείο δημιουργεί το <module>-decl.txt. Το αρχείο αυτό περιέχει τις πλήρεις δηλώσεις που βρέθηκαν από τον σαρωτή.Αν για κάποιο λόγο θέλετε μερικά σύμβολα να εμφανίζονται στην τεκμηρίωση, όπου η πλήρης δήλωση δεν μπορεί να βρεθεί από τον σαρωτή ή πρέπει να εμφανίζεται διαφορετικά, κάποιος μπορεί να τοποθετήσει οντότητες όμοιες με αυτές <module>-decl.txt στο αρχείο <module>-overrides.txt.
Το gtkdoc-scanobj μπορεί επίσης να χρησιμοποιηθεί για να κάνει δυναμική αναζήτηση σε μια βιβλιοθήκη για ενδεχόμενες υποκλάσεις GObject. Αποθηκεύει τις πληροφορίες για τη θέση κάθε αντικειμένου στην ιεραρχία κλάσεων καθώς και για τα ορίσματα και σήματα GObject που περιέχει.
Το gtkdoc-scanobj δεν πρέπει να χρησιμοποιείτε πλέον. Χρειαζόταν στο παρελθόν όταν το GObject ήταν ακόμα GtkObject μέσα στη gtk+.
-
Δημιουργία "πρότυπων" αρχείων Το gtkdoc-mktmpl παράγει μια σειρά από αρχεία στον υποκατάλογο tmpl/, χρησιμοποιώντας τις πληροφορίες που συλλέχθηκαν κατά το πρώτο στάδιο. (Σημειώστε ότι μπορεί να εκτελεστεί περισσότερες από μία φορές. Προσπαθεί να διασφαλίσει ότι δεν χάνεται ποτέ και κανενός είδους τεκμηρίωση.)
Από την έκδοση GTK-Doc 1.9 και μετά τα πρότυπα αρχεία δεν είναι πλέον απαραίτητα. Σας συνιστούμε να διατηρείτε την τεκμηρίωση στον κώδικα. Το gtkdocize υποστηρίζει πλέον την επιλογή --flavour no-tmpl η οποία επιλέγει ένα αρχείο makefile που δεν χρησιμοποιεί καθόλου πρότυπα tmpl. Αν δεν έχετε κάνει ποτέ αλλαγές με το χέρι σε αρχεία προτύπων tmpl, παρακαλώ αφαιρέστε τον κατάλογο (π.χ. από ένα σύστημα ελέγχου εκδόσεων).
-
Παραγωγή SGML/XML και HTML/PDF. Το gtkdoc-mkdb μετατρέπει τα αρχεία προτύπων tmpl σε αρχεία SGML ή XML και τα τοποθετεί στους υποκαταλόγους sgml/ ή xml/. Αν ο πηγαίος κώδικας περιέχει τεκμηρίωση συναρτήσεων εντός ειδικών μπλοκ σχολίων, τα σχόλια συγχωνεύονται σε αυτό το στάδιο. Αν δεν υπάρχουν αρχεία προτύπων tmpl, τότε χρησιμοποιούνται μόνο τα έγγραφα που προέκυψαν από τον πηγαίο κώδικα και τα δεδομένα της ενδοσκόπησης. Σας συνιστούμε να χρησιμοποιήσετε το βιβλίο τεκμηρίωσης XML.
Το gtkdoc-mkhtml μετατρέπει τα αρχεία SGML/XML σε αρχεία HTML που τοποθετούνται στον υποκατάλογο html/. Ομοίως το gtkdoc-mkpdf μετατρέπει τα αρχεία SGML/XML σε ένα αρχείο PDF που ονομάζεται <package>.pdf.
Τα αρχεία στους καταλόγους sgml/, xml/ και html/ αντικαθίστανται αυτόματα. Επομένως, δεν πρέπει να τα αλλάζετε με το χέρι.
-
Διόρθωση παραπομπών μεταξύ εγγράφων Μετά την εγκατάσταση των αρχείων HTML, μπορείτε να εκτελέσετε το gtkdoc-fixxref για να διορθώσετε τυχόν παραπομπές σε διαφορετικά έγγραφα. Για παράδειγμα, η τεκμηρίωση του GTK+ περιέχει πολλές παραπομπές σε τύπους που επεξηγούνται στο εγχειρίδιο του GLib. Όταν ετοιμάζετε πακέτα κώδικα για διανομή, μπορείτε να χρησιμοποιείτε το gtkdoc-rebase για να μετατρέπετε όλους τους εξωτερικούς συνδέσμους σε διαδικτυακούς συνδέσμους. Κατά την εγκατάσταση της τεκμηρίωσης που περιλαμβάνεται στο διανεμηθέντα κώδικα (παράγεται αυτόματα), η ίδια εφαρμογή θα προσπαθήσει να μετατρέψει ξανά τους συνδέσμους σε τοπικούς συνδέσμους (προς τις τοποθεσίες όπου είναι εγκατεστημένη η τεκμηρίωση).