Έκδοση συστήματος Meson build 1.3

Δημοσιεύτηκε η κυκλοφορία του συστήματος κατασκευής Meson 1.3.0, το οποίο χρησιμοποιείται για τη δημιουργία έργων όπως X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME και GTK. Ο κώδικας Meson είναι γραμμένος σε Python και έχει άδεια χρήσης σύμφωνα με την άδεια Apache 2.0.

Ο βασικός στόχος ανάπτυξης του Meson είναι να παρέχει μια διαδικασία συναρμολόγησης υψηλής ταχύτητας σε συνδυασμό με την ευκολία και την ευκολία χρήσης. Αντί για make, η έκδοση χρησιμοποιεί το κιτ εργαλείων Ninja από προεπιλογή, αλλά μπορούν επίσης να χρησιμοποιηθούν και άλλα backend όπως το xcode και το VisualStudio. Το σύστημα διαθέτει έναν ενσωματωμένο χειριστή εξάρτησης πολλαπλών πλατφορμών που σας επιτρέπει να χρησιμοποιείτε το Meson για τη δημιουργία πακέτων για διανομές. Οι κανόνες συναρμολόγησης ορίζονται σε μια απλοποιημένη γλώσσα για συγκεκριμένο τομέα, είναι ευανάγνωστοι και κατανοητοί από τον χρήστη (σύμφωνα με την ιδέα των δημιουργών, ο προγραμματιστής πρέπει να αφιερώσει ελάχιστο χρόνο για τη σύνταξη κανόνων).

Υποστηρίζεται πολλαπλή μεταγλώττιση και δημιουργία σε Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS και Windows χρησιμοποιώντας GCC, Clang, Visual Studio και άλλους μεταγλωττιστές. Είναι δυνατή η κατασκευή έργων σε διάφορες γλώσσες προγραμματισμού, συμπεριλαμβανομένων των C, C++, Fortran, Java και Rust. Υποστηρίζεται μια σταδιακή λειτουργία δημιουργίας, στην οποία αναδημιουργούνται μόνο τα στοιχεία που σχετίζονται άμεσα με τις αλλαγές που έγιναν από την τελευταία έκδοση. Το Meson μπορεί να χρησιμοποιηθεί για τη δημιουργία επαναλήψεων εκδόσεων, όπου η εκτέλεση του build σε διαφορετικά περιβάλλοντα οδηγεί σε εντελώς πανομοιότυπα εκτελέσιμα.

Κύριες καινοτομίες του Meson 1.3:

  • Προστέθηκε η επιλογή "λάθος: αλήθεια" στις μεθόδους ελέγχου μεταγλωττιστή compiler.compiles(), compiler.links() και compiler.run(), η οποία αντιμετωπίζει τις προειδοποιήσεις μεταγλωττιστή ως σφάλματα (μπορεί να χρησιμοποιηθεί για να ελέγξει ότι ο κώδικας έχει κατασκευαστεί χωρίς προειδοποιήσεις ).
  • Προστέθηκε μέθοδος has_define για έλεγχο του ορισμού συμβόλων από τον προεπεξεργαστή.
  • Η παράμετρος macro_name έχει προστεθεί στη συνάρτηση configure_file(), προσθέτοντας προστασία μακροεντολών για διπλές συνδέσεις μέσω του "#include" ("include guards"), σχεδιασμένο στο στυλ των μακροεντολών στη γλώσσα C (απλοποιώντας τη δημιουργία αρχείων διαμόρφωσης με δυναμική ονόματα μακροεντολών).
  • Μια νέα μορφή εξόδου έχει προστεθεί στο configure_file() - JSON ("output_format: json").
  • Προστέθηκε η δυνατότητα χρήσης λιστών τιμών στις παραμέτρους c_std και cpp_std (για παράδειγμα, "default_options: 'c_std=gnu11,c11′').
  • Σε λειτουργικές μονάδες που χρησιμοποιούν CustomTarget για την επεξεργασία αρχείων, έχει προστεθεί η δυνατότητα προσαρμογής των μηνυμάτων που εξάγονται από το βοηθητικό πρόγραμμα ninja.
  • Το build_target "jar" έχει καταργηθεί και αντ' αυτού συνιστάται η κλήση "jar()".
  • Η παράμετρος 'env' έχει προστεθεί στη μέθοδο generator.process() για να ορίσει τη μεταβλητή περιβάλλοντος μέσω της οποίας η γεννήτρια θα επεξεργαστεί την είσοδο.
  • Κατά τον καθορισμό ονομάτων στόχων κατασκευής που σχετίζονται με εκτελέσιμα, επιθήματα όπως "executable('foo', 'main.c', name_suffix: 'bar')" επιτρέπεται να δημιουργούν πρόσθετα εκτελέσιμα στον ίδιο κατάλογο.
  • Προστέθηκε η παράμετρος "vs_module_defs" στη συνάρτηση exectuable() για να χρησιμοποιηθεί ένα αρχείο def που ορίζει τη λίστα των συναρτήσεων που μεταβιβάζονται στη shared_module().
  • Προστέθηκε η παράμετρος 'default_options' στη συνάρτηση find_program() για να ορίσετε τις προεπιλεγμένες επιλογές για εναλλακτικό υποέργο.
  • Προστέθηκε η μέθοδος fs.relative_to(), η οποία επιστρέφει τη σχετική διαδρομή για το πρώτο όρισμα, σε σχέση με το δεύτερο, εάν υπάρχει η πρώτη διαδρομή. Για παράδειγμα, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Η παράμετρος follow_symlinks έχει προστεθεί στις συναρτήσεις install_data(), install_headers() και install_subdir()· όταν οριστεί, ακολουθούνται συμβολικοί σύνδεσμοι.
  • Μια παράμετρος "fill" έχει προστεθεί στη μέθοδο int.to_string() για να γεμίσει σταδιακά τη συμβολοσειρά με μηδενικά. Για παράδειγμα, η κλήση του μηνύματος(n.to_string(fill: 3)) για n=4 θα παράγει τη συμβολοσειρά "004".
  • Προστέθηκε ένας νέος στόχος, clang-tidy-fix, που καθορίζει την εκτέλεση του βοηθητικού προγράμματος clang-tidy με τη σημαία "-fix".
  • Η δυνατότητα καθορισμού του επιθέματος (TARGET_SUFFIX) του στόχου συναρμολόγησης ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) προστέθηκε στην εντολή μεταγλώττισης.
  • Προστέθηκε η μεταβλητή περιβάλλοντος MESON_PACKAGE_CACHE_DIR για την παράκαμψη της διαδρομής προς τη μνήμη cache του πακέτου (subprojects/packagecache), για παράδειγμα, επιτρέποντάς σας να χρησιμοποιήσετε μια κοινόχρηστη προσωρινή μνήμη σε πολλά έργα.
  • Προστέθηκε η εντολή "meson setup --clearcache" για εκκαθάριση της μόνιμης κρυφής μνήμης.
  • Η υποστήριξη για τη λέξη-κλειδί "απαιτείται" έχει προστεθεί σε όλες τις μεθόδους ελέγχου μεταγλωττιστή "has_*", για παράδειγμα, αντί για "assert(cc.has_function('some_function'))" μπορείτε τώρα να καθορίσετε "cc.has_function('some_function' , απαιτείται: αληθές)”.
  • Μια νέα λέξη-κλειδί, rust_abi, προστέθηκε στις συναρτήσεις shared_library(), static_library(), library() και shared_module(), οι οποίες θα πρέπει να χρησιμοποιηθούν αντί του καταργημένου rust_crate_type.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο