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

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

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

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

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

  • เพิ่มการสนับสนุนสำหรับการสร้างโปรเจ็กต์ที่มีอยู่อย่างโปร่งใสซึ่งใช้สคริปต์บิลด์ CMake ขณะนี้ Meson สามารถสร้างโปรเจ็กต์ย่อยแบบง่ายได้โดยตรง (เช่น ไลบรารีเดี่ยว) โดยใช้โมดูล CMake ซึ่งคล้ายกับโปรเจ็กต์ย่อยมาตรฐาน (รวมถึงโปรเจ็กต์ย่อย CMake สามารถวางไว้ในไดเร็กทอรีโปรเจ็กต์ย่อย)
  • สำหรับคอมไพเลอร์ที่ใช้ทั้งหมด การทดสอบเบื้องต้นจะรวมอยู่ในการประกอบและการดำเนินการของไฟล์ทดสอบอย่างง่าย (การตรวจสอบสภาพ) ไม่จำกัดเพียงการทดสอบแฟล็กที่ผู้ใช้ระบุสำหรับคอมไพเลอร์ข้าม (จากนี้ไป คอมไพเลอร์ดั้งเดิมของแพลตฟอร์มปัจจุบันจะถูกตรวจสอบด้วย) .
  • เพิ่มความสามารถในการกำหนดตัวเลือกบรรทัดคำสั่งที่ใช้ระหว่างการคอมไพล์ข้าม โดยมีผลผูกพันโดยระบุคำนำหน้าแพลตฟอร์มก่อนตัวเลือก ก่อนหน้านี้ ตัวเลือกบรรทัดคำสั่งครอบคลุมเฉพาะบิลด์เนทิฟเท่านั้น และไม่สามารถระบุสำหรับการคอมไพล์ข้ามได้ ขณะนี้ตัวเลือกบรรทัดคำสั่งมีผลไม่ว่าคุณจะสร้างแบบเนทิฟหรือแบบข้ามคอมไพล์ เพื่อให้มั่นใจว่าการสร้างแบบเนทิฟและแบบข้ามจะสร้างผลลัพธ์ที่เหมือนกัน
  • เพิ่มความสามารถในการระบุแฟล็ก "--cross-file" มากกว่าหนึ่งครั้งบนบรรทัดคำสั่งเพื่อแสดงรายการ cross-files หลายไฟล์
  • เพิ่มการรองรับคอมไพเลอร์ ICL (คอมไพเลอร์ Intel C/C++) สำหรับแพลตฟอร์ม Windows (ICL.EXE และ ifort)
  • เพิ่มการรองรับชุดเครื่องมือเริ่มต้นสำหรับ CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • มีการเพิ่มเมธอด “get_variable” ให้กับออบเจ็กต์ “การพึ่งพา” ซึ่งช่วยให้คุณได้รับค่าของตัวแปรโดยไม่ต้องคำนึงถึงประเภทของการขึ้นต่อกันในปัจจุบัน (เช่น dep.get_variable(pkg-config : 'var- ชื่อ', cmake : 'COP_VAR_NAME));
  • เพิ่มอาร์กิวเมนต์ตัวเลือกแอสเซมบลีเป้าหมายใหม่ "link_ภาษา" เพื่อระบุภาษาที่ใช้ในการเรียกตัวเชื่อมโยงอย่างชัดเจน ตัวอย่างเช่น โปรแกรม Fortran หลักสามารถเรียกใช้โค้ด C/C++ ซึ่งจะเลือก C/C++ โดยอัตโนมัติเมื่อควรใช้ Fortran Linker
  • การจัดการแฟล็กตัวประมวลผลล่วงหน้า CPPFLAGS มีการเปลี่ยนแปลง ในขณะที่ Meson ก่อนหน้านี้เก็บ CPPFLAGS และแฟล็กการคอมไพล์เฉพาะภาษา (CFLAGS, CXXFLAGS) แยกต่างหาก ตอนนี้พวกมันจะถูกประมวลผลแยกกันไม่ได้ และแฟล็กที่อยู่ใน CPPFLAGS ถูกใช้เป็นแหล่งอื่นของแฟล็กการคอมไพล์สำหรับภาษาที่รองรับ
  • ขณะนี้เอาต์พุตของ custom_target และ custom_target[i] สามารถใช้เป็นอาร์กิวเมนต์ในการดำเนินการ link_with และ link_whole ได้
  • ขณะนี้ตัวสร้างมีความสามารถในการระบุการขึ้นต่อกันเพิ่มเติมโดยใช้ตัวเลือก "ขึ้นอยู่กับ" (เช่น ตัวสร้าง (program_runner, เอาต์พุต: ['@[ป้องกันอีเมล]'] ขึ้นอยู่กับ: exe));
  • เพิ่มตัวเลือกแบบคงที่ใน find_library เพื่อให้การค้นหารวมเฉพาะไลบรารีที่เชื่อมโยงแบบคงที่
  • สำหรับ python.find_installation ได้มีการเพิ่มความสามารถในการตรวจสอบการมีอยู่ของโมดูล Python ที่กำหนดสำหรับเวอร์ชันเฉพาะของ Python แล้ว
  • เพิ่มโมดูลใหม่ unstable-kconfig สำหรับการแยกวิเคราะห์ไฟล์ kconfig;
  • เพิ่มคำสั่งใหม่ “โปรเจ็กต์ย่อย foreach” ซึ่งรับคำสั่งพร้อมอาร์กิวเมนต์และรันในไดเร็กทอรีโปรเจ็กต์ย่อยทั้งหมด

ที่มา: opennet.ru

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