1. Η γέννηση του GCC!
Το 1985, μια σκοτεινή νύχτα που τα δάχτυλά του δεν φαίνονταν, ένας παράξενος άντρας με γένια, κοντή σιλουέτα και ακατάστατα μαλλιά άρχισε να γράφει μια σειρά από μεταγλωττιστές της γλώσσας C. Αυτή η εκφωνία, αργότερα γνωστή ως ο «μεγαλύτερος προγραμματιστής» και «πατέρας του ελεύθερου λογισμικού», ήταν ο Richard Stallman. Μετά από δύο χρόνια σκληρής δουλειάς, ο Richard Stallman, ο οποίος έχει μακρύτερη γενειάδα και πιο ακατάστατα μαλλιά, ολοκλήρωσε την πρώτη έκδοση του μεταγλωττιστή C, την οποία ονομάζει GNU C Complier, η οποία είναι πλέον η πηγή του διάσημου GCC. Αργότερα, το GCC αναπτύχθηκε γρήγορα και τώρα το GCC μπορεί να μεταγλωττίσει όχι μόνο τη γλώσσα C, αλλά και τη γλώσσα C++, Fortran, Pascal, Objective-C, Java, Ada και άλλες γλώσσες. Στις δεκαετίες του '80 και του '90 του περασμένου αιώνα, η συχνότητα της CPU, το μέγεθος του σκληρού δίσκου και το μέγεθος της μνήμης των προσωπικών υπολογιστών μετρήθηκαν σε MB ή ακόμα και KB και ο αριθμός των αρχείων προγράμματος που έπρεπε να μεταγλωττιστούν ήταν μικρός και οι εντολές GCC ήταν αρκετές για να το αντιμετωπίσουν.
Δεύτερον, εμφανίστηκαν νέα προβλήματα! (δημιουργία & δημιουργία αρχείου)
Με τη βελτίωση και τη διάδοση της απόδοσης του υπολογιστή, ένα έργο λογισμικού περιέχει όλο και περισσότερα αρχεία πηγής, όπως το linux, το οποίο μπερδεύεται εύκολα και φορτίζεται με φόρτο εργασίας, το οποίο είναι εύκολο να μπερδευτεί και να φορτωθεί η εργασία, κάτι που θα τρελάνει τους ανθρώπους.
Ο Richard Stallman και ο Roland McGrath ανέπτυξαν από κοινού το make and makefile για να λύσουν αυτό το πρόβλημα. Το εργαλείο make μπορεί να θεωρηθεί ως ένα έξυπνο εργαλείο επεξεργασίας παρτίδων, το οποίο δεν έχει τη λειτουργία μεταγλώττισης και σύνδεσης, αλλά χρησιμοποιεί μια μέθοδο παρόμοια με την επεξεργασία παρτίδας - καλώντας τις εντολές που καθορίζονται από τον χρήστη στο αρχείο makefile. Τι είναι το makefile; Το makefile είναι ένα αρχείο σεναρίου, ακριβώς όπως η παρτιτούρα ενός τραγουδιού, το εργαλείο δημιουργίας είναι σαν μαέστρος, ο μαέστρος κατευθύνει ολόκληρη την ορχήστρα να παίξει σύμφωνα με την παρτιτούρα και το εργαλείο δημιουργίας μεταγλωττίζεται και συνδέεται σύμφωνα με τις εντολές στο makefile. Η εντολή makefile περιέχει εντολές για να καλέσετε το gcc (ή άλλο μεταγλωττιστή) για να μεταγλωττίσετε ένα αρχείο προέλευσης.
3. Νέα προβλήματα προέκυψαν ξανά! (Cmake & CMakelist)
Το makefile μπορεί να γραφτεί με το χέρι σε μερικά απλά έργα, αλλά όταν το έργο είναι πολύ μεγάλο, είναι επίσης πολύ ενοχλητικό να γράψετε το makefile με το χέρι. Και τα αρχεία για διαφορετικές πλατφόρμες έχουν εμφανιστεί το ένα μετά το άλλο, συμπεριλαμβανομένων των GNU make, QT's qmake, MSnmake της Microsoft, BSD Make(pmake), Makepp κ.λπ. Αυτά τα εργαλεία Make ακολουθούν διαφορετικές προδιαγραφές και πρότυπα και η μορφή Makefile που εκτελούν ποικίλλει ευρέως. Αυτό δημιουργεί ένα σοβαρό πρόβλημα: εάν το λογισμικό θέλει να είναι cross-platform, πρέπει να μπορεί να μεταγλωττίζεται σε διαφορετικές πλατφόρμες. Εάν χρησιμοποιείτε το εργαλείο Make παραπάνω, πρέπει να γράψετε ένα makefile για κάθε πρότυπο, κάτι που θα είναι τρελή δουλειά, και αν αλλάξετε το makefile της πλατφόρμας, θα πρέπει να το τροποποιήσετε ξανά.
Έτσι, αυτή τη στιγμή, εμφανίστηκε το εργαλείο Cmake και το Cmake μπορεί να δημιουργήσει ένα αρχείο makefile για την παραπάνω δημιουργία πιο εύκολα. Φυσικά, το cmake έχει και άλλες λειτουργίες, δηλαδή μπορεί να δημιουργήσει makefiles που μπορούν να χρησιμοποιηθούν στην αντίστοιχη πλατφόρμα σε όλες τις πλατφόρμες και δεν χρειάζεται να το τροποποιήσετε μόνοι σας. Το cmake είναι το ανώτερο επίπεδο του Makefile και σκοπός τους είναι να παράγουν φορητά makefiles και να απλοποιούν τον τεράστιο φόρτο εργασίας της σύνταξης makefiles μόνοι σας. Τι χρησιμοποιεί όμως το cmake για να δημιουργήσει ένα makefile; Πρέπει επίσης να δημιουργήσει ένα makefile με βάση ένα αρχείο που ονομάζεται CMakeLists.txt file (επιστημονική ονομασία: αρχείο διαμόρφωσης). Τελικά CMakeLists.txt ποιος γράφει το έγγραφο; Φυσικά, το έγραψες μόνος σου.
Τέταρτον, νέα προβλήματα εμφανίστηκαν ξανά! (Νίντζα)
Καθώς η μηχανική λογισμικού γίνεται μεγαλύτερη και πιο περίπλοκη, το πρόβλημα της αργής ταχύτητας εκτέλεσης της μάρκας γίνεται όλο και πιο σοβαρό.
Ως αποτέλεσμα, ένας προγραμματιστής της Google κυκλοφόρησε το Ninja, ένα εργαλείο κατασκευής που εστιάζει στην ταχύτητα. Το Ninja δεν διαθέτει όλα τα είδη προηγμένων χαρακτηριστικών, η σύνταξη και η χρήση είναι πολύ απλές και καθορίζει τι πρέπει να κάνει λεπτομερώς, οπότε αρχίζει να μεταγλωττίζεται πολύ γρήγορα. Σύμφωνα με πραγματικές δοκιμές: με περισσότερα από 30.000 αρχεία πηγής, είναι επίσης δυνατό να ξεκινήσετε μια πραγματική κατασκευή σε 1 δευτερόλεπτο. Αντίθετα, τα Makefiles που γράφτηκαν από ανώτερους μηχανικούς χρειάζονται επίσης 10-20 δευτερόλεπτα για να ξεκινήσουν την κατασκευή.
5. Το τέλειο τέλος μέχρι στιγμής!
Το Cmake μπορεί να δημιουργήσει εργαλεία .ninja και .makefile. Επειδή πολλοί άνθρωποι δεν είναι εξοικειωμένοι με το πώς να γράφουν αρχεία makefile και αρχεία ninja, το cmake χρειάζεται μόνο μια απλή περιγραφή του αρχείου πηγαίου κώδικα (δηλαδή CMakeLists.txt αρχείο) για να δημιουργήσει αυτόματα ένα αρχείο makefile έργου ή ένα αρχείο ninja και, στη συνέχεια, να ξεκινήσει τη μεταγλώττιση μέσω ninja ή make.
5 λεπτά για να κατανοήσετε το make/makefile/cmake/nmake
Πρόσφατα, σας έφτιαξαν make, cmake, makefile...... Αυτά τα πράγματα είναι ζαλισμένα, δείτε το παρακάτω άρθρο, ίσως μπορείτε να καταλάβετε ξεκάθαρα.
1. ΣΣΚ Είναι η συλλογή GNU Compiler, ή απλά ένας μεταγλωττιστής, ο οποίος μπορεί να μεταγλωττίσει πολλές γλώσσες προγραμματισμού (συμπεριλαμβανομένων των C, C++, Objective-C, Fortran, Java κ.λπ.).
Όταν το πρόγραμμά μας έχει μόνο ένα αρχείο προέλευσης, μπορούμε να το μεταγλωττίσουμε απευθείας με την εντολή gcc.
Τι γίνεται όμως αν το πρόγραμμά μας περιέχει πολλά αρχεία πηγής; Κατά τη μεταγλώττιση με εντολές gcc μία προς μία, είναι εύκολο να μπερδευτείτε και να εντάξετε την εργασία σας, οπότε εμφανίζεται το ακόλουθο εργαλείο δημιουργίας.
2. Κάντε Το εργαλείο make μπορεί να θεωρηθεί ως ένα έξυπνο εργαλείο επεξεργασίας παρτίδων, το οποίο δεν έχει τη λειτουργία μεταγλώττισης και σύνδεσης, αλλά χρησιμοποιεί μια μέθοδο παρόμοια με την επεξεργασία παρτίδας - καλώντας τις εντολές που καθορίζονται από τον χρήστη στο αρχείο makefile.
3. Φτιάξε αρχείο Τι είναι αυτό?
Με απλά λόγια, ακριβώς όπως η παρτιτούρα ενός τραγουδιού, το εργαλείο δημιουργίας είναι σαν μαέστρος, ο μαέστρος κατευθύνει ολόκληρη την ορχήστρα να παίξει σύμφωνα με την παρτιτούρα και το εργαλείο δημιουργίας μεταγλωττίζει και συνδέεται σύμφωνα με τις εντολές στο makefile. Η εντολή makefile περιέχει εντολές για να καλέσετε το gcc (ή άλλο μεταγλωττιστή) για να μεταγλωττίσετε ένα αρχείο προέλευσης.
Το makefile μπορεί να ληφθεί χειροκίνητα σε μερικά απλά έργα, αλλά όταν το έργο είναι πολύ μεγάλο, το χειρόγραφο makefile είναι επίσης πολύ ενοχλητικό.
4. cmake Το cmake μπορεί εύκολα να δημιουργήσει ένα αρχείο makefile για την παραπάνω μάρκα. Φυσικά, το cmake έχει και άλλες καλύτερες λειτουργίες, δηλαδή μπορεί να δημιουργήσει makefiles που μπορούν να χρησιμοποιηθούν στην αντίστοιχη πλατφόρμα σε όλες τις πλατφόρμες, οπότε δεν χρειάζεται να το τροποποιήσουμε μόνοι μας.
Τι χρησιμοποιεί όμως το cmake για να δημιουργήσει ένα makefile; Πρέπει επίσης να δημιουργήσει ένα makefile με βάση ένα αρχείο που ονομάζεται CMakeLists.txt file (επιστημονική ονομασία: αρχείο διαμόρφωσης).
5. CMakeList.txt Τελικά CMakeLists.txt ποιος γράφει το έγγραφο; Αγαπητέ, είναι γραμμένο από το ίδιο σου το χέρι.
6. nmake Τι είναι το nmake;
Το nmake είναι μια δευτερεύουσα εντολή στο Microsoft Visual Studio, η οποία πρέπει να εγκαταστήσει το VS, το οποίο στην πραγματικότητα μπορούμε να πούμε ότι είναι ισοδύναμο με το make του linux, καταλαβαίνετε;
Μεταφέρθηκε από:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|