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

Όλα ή σχεδόν όλα (και αν δεν είστε τυχεροί) έπρεπε να συντάξουμε ένα πρόγραμμα από τον πηγαίο κώδικα. Στην πραγματικότητα, στα περισσότερα έργα αρκεί να κάνετε ένα ./configure && make && make install για να εγκαταστήσετε το πρόγραμμα, αλλά θα δούμε τις διαφορετικές εναλλακτικές λύσεις:

Δημιουργία GNU

Το GNU Make είναι ένα σύστημα συλλογής χαμηλού επιπέδου, λίγα πράγματα έχουν διαμορφωθεί και δεν πραγματοποιούνται δοκιμές:

Πλεονεκτήματα:

  • Πολύ διαδεδομένη
  • Εύκολο στην κατανόηση
  • Γρήγορα

Μειονεκτήματα:

  • Λίγο διαμορφώσιμο
  • Δύσκολο να διατηρηθεί
  • Δεν εκτελεί δοκιμές

make

BSD μάρκα

Το BSD Make είναι μια άλλη έκδοση του Make που χρησιμοποιείται αυτήν τη στιγμή από * λειτουργικά συστήματα BSD. Διαφέρει στο GNU Make είναι το πιο ολοκληρωμένο BSD Make σε λειτουργίες αν και είναι λιγότερο διαδεδομένο.

Πλεονεκτήματα:

  • Γρήγορα
  • Εύκολο στην κατανόηση
  • Περισσότερες δυνατότητες από το GNU Make

Μειονεκτήματα:

  • Δεν είναι ευρέως διαδεδομένο στον κόσμο του Linux
  • Δεν εκτελεί δοκιμές
  • Λίγο διαμορφώσιμο
  • Δύσκολο να διατηρηθεί

make

Αυτόματα εργαλεία

Το Autotools είναι το επίσημο σύστημα GNU και δημιουργεί ένα σενάριο που ονομάζεται configigure που πρέπει να καλέσουμε για να δημιουργήσουμε το αντίστοιχο Makefile από το GNU Make. Χρησιμοποιείται ευρέως, ωστόσο, όλο και περισσότεροι άνθρωποι (συμπεριλαμβανομένου του εαυτού μου) πιστεύουν ότι είναι πολύ δυσκίνητο, δύσκολο, αργό και όχι πολύ συμβατό.

Πλεονεκτήματα:

  • Πολύ διαμορφώσιμο
  • Πολύ διαδεδομένη

Μειονεκτήματα:

  • Μικρή φορητότητα μεταξύ συστημάτων Non-UNIX
  • Εκτελέστε πάρα πολλές δοκιμές (ελέγξτε ΟΛΑ ΚΑΙ ΟΛΑ ΟΛΑ είναι ΟΛΑ)
  • Πολύ αργή κατά τη ρύθμιση
  • Κακή συμβατότητα προς τα πίσω

./configure && make

CMake

(Το προτιμώμενο σύστημά μου) Το CMake είναι ένα σύστημα που αντισταθμίζει τα μειονεκτήματα των Autotools σε πολλές πτυχές, όπως η φοβερή συμβατότητα και φορητότητα. Επίσης, βελτιώνοντας το δοκιμαστικό σύστημα που είναι ιδιαίτερα διαμορφώσιμο για τις ανάγκες κάθε έργου. Η αλήθεια είναι ότι όλο και περισσότερα έργα χρησιμοποιούν CMake όπως KDE, PortAudio, Ogre3D κ.λπ. Μπορούμε να αναγνωρίσουμε αυτόν τον τύπο συστήματος χάρη σε ένα αρχείο CMakeLists.txt που θα δημιουργήσει ένα Makefile ή ένα έργο για Eclipse ή CodeBlocks

Πλεονεκτήματα:

  • Γρήγορα
  • Μεγάλη υποστήριξη μεταξύ πλατφορμών
  • Μπορείτε να ορίσετε τις δοκιμές με πολύ προσαρμόσιμο τρόπο

Μειονεκτήματα:

  • Αρχικά δύσκολο να κατανοηθεί
  • Πρέπει να δουλέψετε με μια αφαίρεση που μπορεί να είναι τρομακτική στην αρχή
  • Λίγο εξαπλώνεται αν και σιγά σιγά μεγαλώνει

cmake . && make

Q Κάντε

Το QMake είναι ένα σύστημα που σχεδιάστηκε από την Trolltech για τη συλλογή έργων που έγιναν στο Qt. Με αυτόν τον τρόπο το qmake δίνει μεγάλη έμφαση στο Qt και είναι συνήθως η μορφή που χρησιμοποιείται από IDE όπως το QtCreator. Είναι αρκετά δημοφιλές σε έργα Qt, αλλά δεν βρίσκεται εκτός αυτού του περιβάλλοντος:

Πλεονεκτήματα:

  • Πολύ καλά ενσωματωμένο με Qt
  • Γρήγορα
  • Καλή πολυπλατφόρμα εντός Qt

Μειονεκτήματα:

  • Όχι συχνές εκτός εφαρμογών Qt

qmake . && make

Σκόνς

Το SCons είναι ένα σύστημα που βασίζεται σε Python για τη σύνταξη έργων C / C ++. Σε αντίθεση με τα Autotools, CMake ή QMake. Το SCons δεν δημιουργεί ένα Makefile. Το SCons είναι πολύ τροποποιήσιμο αλλά είναι ίσως το πιο αργό στις απλές λειτουργίες
Πλεονεκτήματα:

  • Εύκολη τροποποίηση
  • Πάρτε τις δίκαιες δοκιμές

Μειονεκτήματα:

  • Λίγη εξάπλωση
  • Αργά

scons

Ενισχύστε. Jam

Το Boost.Jam είναι μια έκδοση του Perforce Jam που χρησιμοποιείται στις δημοφιλείς βιβλιοθήκες C ++ Boost, αν και το σύστημα συλλογής μπορεί να χρησιμοποιηθεί ξεχωριστά. Σε αντίθεση με το GNU Make, το Boost.Jam χρησιμοποιεί το Jamfiles, το οποίο είναι μια βελτιωμένη έκδοση του Makefiles. Είναι αρκετά δημοφιλείς στο περιβάλλον BeOS / Zeta / Haiku.

Πλεονεκτήματα:

  • Γρήγορα
  • Το συντομότερο για να γράψετε

Μειονεκτήματα:

  • Λίγη εξάπλωση
  • Δυσκολία εκτέλεσης δοκιμών

bjam

Ninja

Το Ninja είναι ένα σύστημα που αναπτύχθηκε από την Google για να παρέχει ένα εξαιρετικά γρήγορο σύστημα κατασκευής που είχε αρχικά σχεδιαστεί για να είναι αυτό του έργου Chromium. Το Ninja δεν έχει σχεδιαστεί για εύκολη τροποποίηση, σύμφωνα με τους δικούς του συγγραφείς, πρέπει να βρεθεί ένα σύστημα που παράγει Ninja. Συνιστώνται CMake και gyp.

Πλεονεκτήματα:

  • Muy rápido

Μειονεκτήματα:

  • Χρειάζεστε ένα άλλο σύστημα για να δημιουργήσετε το Ninja
  • Λίγη εξάπλωση

ninja

άλλοι

Μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο σύστημα, όπως το δικό σας bash ή python script. Υπάρχουν επίσης γεννήτριες για άλλες μη γηγενείς γλώσσες που μπορούν να χρησιμοποιηθούν όπως Gradle, Maven, gyp κ.λπ.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   abimaelmartell dijo

    Το Make δεν είναι ένα σύστημα συλλογής, είναι μια γεννήτρια δυαδικών (ή στόχων) από τον πηγαίο κώδικα. Μπορεί επίσης να χρησιμοποιηθεί ως task runner.

    Διαφωνώ μαζί σας ότι η μάρκα BSD έχει ευρύτερη λειτουργικότητα, η μάρκα GNU είναι πιο πλήρης, έχει περισσότερη λειτουργικότητα. Και το λέω αυτό από τη δική μου εμπειρία, στο BSD πρέπει πάντα να εγκαταστήσω το GNU make γιατί το BSD είναι πολύ απλό σε σύγκριση με το GNU.

    Συμφωνώ μαζί σας ότι τα Autotools είναι αρκετά δυσκίνητα, προτιμώ να χρησιμοποιώ απλώς το Makefile. Είναι δύσκολο να εντοπιστούν σφάλματα σε Makefiles που δημιουργούνται από την Autotools.

    Χαιρετισμούς!

    1.    AdrianArroyoStreet dijo

      Ευχαριστώ για το σχόλιο!
      Κατά τη γνώμη μου, το GNU make ήταν πάντα πιο παραδοσιακό και πιστό στο αρχικό πρόγραμμα make και το BSD make ήταν πάντα πιο καινοτόμο, αλλά μπορεί να έχω παρατηρήσει άλλα πράγματα κατά τη σύγκριση.

      Τα Autotools είναι πραγματικά ένας μεγάλος πονοκέφαλος. Ως συνεισφέρων στο λειτουργικό σύστημα Haiku έπρεπε να μεταφέρω λογισμικό με autotools και είναι κόλαση. Δεν υπάρχουν λίγες περιπτώσεις που κατέληξα να δημιουργήσω το Makefile ή το CMakeLists.txt πριν διορθώσω αυτό το χάος.

  2.   Τσακ Ντανιέλ dijo

    Αυτήν τη στιγμή χρησιμοποιώ το Premake4, πολύ διαμορφώσιμο και απλό βασισμένο σε σενάρια Lua. Ρίξτε μια ματιά αν δεν το γνωρίζετε.
    Συγχαρητήρια για το άρθρο, απλή και περιεκτική, εξαιρετική αναφορά.

  3.   Οστά dijo

    Το «make check» χρησιμοποιείται για να ελέγξει τη συλλογή μετά τη χρήση του make
    Χαιρετίσματα