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

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

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

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

หลัก นวัตกรรม เมสัน 0.52:

  • เพิ่มการสนับสนุนการทดลองสำหรับ Webassembly โดยใช้ Emscripten เป็นคอมไพเลอร์
  • การรองรับแพลตฟอร์ม Illumos และ Solaris ได้รับการปรับปรุงอย่างมีนัยสำคัญและกลับสู่สภาพการทำงาน
  • ตรวจสอบให้แน่ใจว่าสคริปต์การทำให้เป็นสากลตาม gettext ถูกละเว้นหากระบบไม่ได้ติดตั้งชุดเครื่องมือ gettext (ก่อนหน้านี้ ข้อผิดพลาดจะแสดงขึ้นเมื่อใช้โมดูล i18n บนระบบที่ไม่มี gettext)
  • ปรับปรุงการรองรับไลบรารีแบบคงที่ ปัญหามากมายเมื่อใช้ไลบรารีแบบคงที่ที่ถอนการติดตั้งได้รับการแก้ไขแล้ว
  • เพิ่มความสามารถในการใช้พจนานุกรมเพื่อกำหนดตัวแปรสภาพแวดล้อม เมื่อเรียกสภาพแวดล้อม () องค์ประกอบแรกสามารถระบุเป็นพจนานุกรมซึ่งมีการกำหนดตัวแปรสภาพแวดล้อมในรูปแบบคีย์/ค่าได้ ตัวแปรเหล่านี้จะถูกถ่ายโอนไปยัง environment_object เหมือนกับว่าถูกตั้งค่าแยกกันผ่านเมธอด set() ขณะนี้พจนานุกรมสามารถส่งผ่านไปยังฟังก์ชันต่างๆ ที่รองรับอาร์กิวเมนต์ "env" ได้แล้ว
  • เพิ่มฟังก์ชัน "runtarget alias_target(target_name, dep1, ...)" ที่สร้างเป้าหมายบิลด์ระดับแรกใหม่ที่สามารถเรียกได้ด้วยแบ็กเอนด์บิลด์ที่เลือก (เช่น "ninja target_name") เป้าหมายการ build นี้ไม่ได้รันคำสั่งใดๆ แต่ทำให้แน่ใจว่าการขึ้นต่อกันทั้งหมดถูกสร้างขึ้น
  • เปิดใช้งานการตั้งค่าอัตโนมัติของตัวแปรสภาพแวดล้อม PKG_CONFIG_SYSROOT_DIR ระหว่างการคอมไพล์ข้ามหากมีการตั้งค่า sys_root ในส่วน "[properties]"
  • เพิ่มตัวเลือก "--gdb-path" เพื่อกำหนดเส้นทางไปยังดีบักเกอร์ GDB เมื่อระบุตัวเลือก "--gdb testname" เพื่อรัน GDB ด้วยสคริปต์ทดสอบที่ระบุ
  • เพิ่มการตรวจจับอัตโนมัติของเป้าหมายการสร้าง clang-tidy เพื่อรัน linter นี้กับไฟล์ต้นฉบับทั้งหมด เป้าหมายจะถูกสร้างขึ้นหากมี clang-tidy อยู่ในระบบและไฟล์ ".clang-tidy" (หรือ "_clang-tidy") ถูกกำหนดไว้ในรูทโปรเจ็กต์
  • เพิ่มการพึ่งพา ('บล็อก') สำหรับใช้ในส่วนขยายเสียงดังกราว Blocks;
  • มุมมองตัวเชื่อมโยงและคอมไพเลอร์จะถูกแยกออกจากกัน ทำให้สามารถใช้คอมไพเลอร์และตัวเชื่อมโยงที่แตกต่างกันได้
  • เพิ่มเมธอด all_dependencies() ให้กับออบเจ็กต์ SourceSet นอกเหนือจากเมธอด all_sources()
  • ใน run_project_tests.py ตัวเลือก “--only” ได้ถูกเพิ่มเพื่อทำการทดสอบแบบเลือก (เช่น “python run_project_tests.py —only fortran python3”);
  • ขณะนี้ฟังก์ชัน find_program() มีความสามารถในการค้นหาเฉพาะเวอร์ชันที่ต้องการของโปรแกรมเท่านั้น (เวอร์ชันจะถูกกำหนดโดยการรันโปรแกรมด้วยตัวเลือก "-version")
  • เพื่อควบคุมการส่งออกสัญลักษณ์ ตัวเลือก vs_module_defs ได้ถูกเพิ่มเข้าไปในฟังก์ชัน shared_module() ซึ่งคล้ายกับ shared_library();
  • โมดูล kconfig ได้รับการขยายเพื่อรองรับ configuration_file() สำหรับการระบุไฟล์อินพุต
  • เพิ่มความสามารถในการระบุไฟล์อินพุตหลายไฟล์สำหรับตัวจัดการ “command:” เพื่อ configuration_file();
  • คำสั่ง “dist” สำหรับสร้างไฟล์เก็บถาวรถูกย้ายไปยังหมวดหมู่ของคำสั่งระดับแรก (ก่อนหน้านี้คำสั่งเชื่อมโยงกับนินจา) เพิ่มตัวเลือก "--formats" เพื่อกำหนดประเภทของไฟล์เก็บถาวรที่จะสร้าง (เช่น
    "meson dist -formats=xztar,zip")

ที่มา: opennet.ru

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