ระบบสร้าง Meson รุ่น 1.1

ระบบบิลด์ Meson 1.1.0 เปิดตัวแล้ว ซึ่งใช้ในการสร้างโปรเจ็กต์ต่างๆ เช่น X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME และ GTK รหัสของ Meson เขียนด้วยภาษา Python และได้รับอนุญาตภายใต้ลิขสิทธิ์ Apache 2.0

เป้าหมายหลักของการพัฒนา Meson คือเพื่อให้กระบวนการประกอบมีความเร็วสูงรวมกับความสะดวกสบายและใช้งานง่าย แทนที่จะใช้ยูทิลิตี้ make ชุดเครื่องมือ Ninja จะถูกใช้เป็นค่าเริ่มต้นเมื่อสร้าง แต่สามารถใช้แบ็กเอนด์อื่นๆ เช่น xcode และ VisualStudio ได้เช่นกัน ระบบมีตัวจัดการการพึ่งพาหลายแพลตฟอร์มในตัวที่ช่วยให้คุณใช้ Meson เพื่อสร้างแพ็คเกจสำหรับการแจกจ่าย กฎการประกอบจะถูกระบุในภาษาเฉพาะโดเมนที่เรียบง่าย ผู้ใช้สามารถอ่านและเข้าใจได้สูง (ตามที่ผู้เขียนตั้งใจไว้ นักพัฒนาควรใช้เวลาขั้นต่ำในการเขียนกฎ)

รองรับการคอมไพล์ข้ามและสร้างบน Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS และ Windows โดยใช้ GCC, Clang, Visual Studio และคอมไพเลอร์อื่นๆ เป็นไปได้ที่จะสร้างโปรเจ็กต์ในภาษาการเขียนโปรแกรมต่างๆ รวมถึง C, C++, Fortran, Java และ Rust รองรับโหมดการสร้างส่วนเพิ่ม ซึ่งมีเพียงส่วนประกอบที่เกี่ยวข้องโดยตรงกับการเปลี่ยนแปลงที่เกิดขึ้นตั้งแต่การสร้างครั้งล่าสุดเท่านั้นที่ถูกสร้างขึ้นใหม่ Meson สามารถใช้เพื่อสร้างบิลด์ที่ทำซ้ำได้ ซึ่งการรันบิลด์ในสภาพแวดล้อมที่แตกต่างกันส่งผลให้มีการสร้างไฟล์ปฏิบัติการที่เหมือนกันโดยสิ้นเชิง

นวัตกรรมหลักของ Meson 1.1:

  • มีการเพิ่มอาร์กิวเมนต์ "objects:" ใหม่ลงใน Declar_dependency() เพื่อแนบอ็อบเจ็กต์โดยตรงกับไฟล์ปฏิบัติการในรูปแบบของการขึ้นต่อกันภายในที่ไม่จำเป็นต้องใช้ link_who
  • ขณะนี้คำสั่ง "meson devenv -dump" มีตัวเลือกในการระบุไฟล์เพื่อเขียนตัวแปรสภาพแวดล้อมแทนการพิมพ์ไปยังเอาต์พุตมาตรฐาน
  • เพิ่มเมธอด FeatureOption.enable_if และ FeatureOption.disable_if เพื่อให้ง่ายต่อการสร้างเงื่อนไขเพื่อเตรียมการส่งพารามิเตอร์ไปยังฟังก์ชัน dependency() opt = get_option('feature').disable_if(ไม่ใช่ foo, error_message : 'ไม่สามารถเปิดใช้งานฟีเจอร์ได้เมื่อ foo ไม่ได้เปิดใช้งานด้วย') dep = dependency('foo', required : opt)
  • อนุญาตให้ส่งวัตถุที่สร้างขึ้นเป็นอาร์กิวเมนต์ไปยัง "วัตถุ:"
  • ฟังก์ชันโปรเจ็กต์รองรับการติดตั้งไฟล์พร้อมข้อมูลเกี่ยวกับสิทธิ์การใช้งานโปรเจ็กต์แล้ว
  • การเรียกใช้ "sudo meson install" ช่วยให้มั่นใจได้ว่าสิทธิ์จะถูกรีเซ็ตในระหว่างการสร้างใหม่สำหรับแพลตฟอร์มเป้าหมาย
  • คำสั่ง "meson install" ให้ความสามารถในการระบุตัวจัดการแยกต่างหากเพื่อรับสิทธิ์รูท (เช่น คุณสามารถเลือก polkit, sudo, opendoas หรือ $MESON_ROOT_CMD) การเรียกใช้ "การติดตั้ง meson" ในโหมดไม่โต้ตอบจะไม่พยายามเพิ่มระดับสิทธิ์อีกต่อไป
  • เพิ่มการรองรับตัวเลือกการอ่านจากไฟล์ meson.options แทน meson_options.txt
  • มีการเปลี่ยนเส้นทางข้อมูลเกี่ยวกับความคืบหน้าของการวิปัสสนาไปยัง stderr
  • เพิ่มแบ็กเอนด์ "none" ใหม่ (--backend=none) เพื่อสร้างโปรเจ็กต์ที่มีกฎการติดตั้งเท่านั้นและไม่มีกฎการสร้าง
  • เพิ่มการพึ่งพา pybind11 ใหม่ ทำให้การพึ่งพา ('pybind11') ทำงานกับ pkg-config และ cmake ได้โดยไม่ต้องใช้สคริปต์ pybind11-config
  • อนุญาตให้ใช้ตัวเลือก "--reconfigure" และ "--wipe" (การตั้งค่า meson --reconfigure builddir และ meson setup --wipe builddir ) โดยมี builddir ว่างเปล่า
  • เพิ่มการรองรับคำหลัก dry_run ใน meson.add_install_script() เพื่ออนุญาตให้เรียกใช้สคริปต์การติดตั้งของคุณเองเมื่อเรียก "meson install --dry-run"

ที่มา: opennet.ru

เพิ่มความคิดเห็น