Meson бүтээх системийн хувилбар 1.3

X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME, GTK зэрэг төслүүдийг бүтээхэд ашигладаг Meson 1.3.0 бүтээх систем гарсан. Meson-ийн код нь Python дээр бичигдсэн бөгөөд Apache 2.0 лицензийн дагуу лицензтэй.

Месон хөгжүүлэлтийн гол зорилго нь угсралтын үйл явцын өндөр хурдыг тав тухтай, ашиглахад хялбар болгох явдал юм. Барилга хийх үед make utility-ийн оронд Ninja toolkit-ийг анхдагч байдлаар ашигладаг боловч xcode, VisualStudio зэрэг бусад арын хэсгийг бас ашиглаж болно. Энэхүү систем нь олон платформын хамаарлыг зохицуулагчтай бөгөөд Meson-ыг ашиглан түгээлтийн багцуудыг бүтээх боломжийг олгодог. Ассемблей дүрмүүд нь хялбаршуулсан домэйны хэлээр тодорхойлогддог бөгөөд хэрэглэгчдэд маш их уншигдахуйц, ойлгомжтой байдаг (зохиогчийн санаачилгаар хөгжүүлэгч нь дүрэм бичихэд хамгийн бага цаг зарцуулах ёстой).

GCC, Clang, Visual Studio болон бусад хөрвүүлэгчийг ашиглан Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS болон Windows дээр хөндлөн эмхэтгэл болон бүтээхийг дэмждэг. C, C++, Fortran, Java, Rust гэх мэт янз бүрийн програмчлалын хэлээр төсөл бүтээх боломжтой. Зөвхөн сүүлийн бүтээцээс хойш хийсэн өөрчлөлттэй шууд холбоотой бүрэлдэхүүн хэсгүүдийг дахин бүтээдэг нэмэлт бүтээх горимыг дэмждэг. Месоныг давтагдах бүтээцийг үүсгэхэд ашиглаж болох бөгөөд уг бүтцийг өөр өөр орчинд ажиллуулах нь бүрэн ижил гүйцэтгэх боломжтой файлуудыг үүсгэхэд хүргэдэг.

Meson 1.3-ийн гол шинэчлэлүүд:

  • Хөрвүүлэгчийн сэрэмжлүүлгийг алдаа гэж үздэг compiler.compiles(), compiler.links() болон compiler.run()-д "werror: true" сонголтыг нэмсэн (код нь анхааруулгагүйгээр хийгдсэн эсэхийг шалгахад ашиглаж болно). ).
  • Урьдчилан боловсруулагчаар тэмдэгтийн тодорхойлолтыг шалгах has_define аргыг нэмсэн.
  • Macro_name параметрийг configure_file() функцэд нэмж, C хэл дээрх макро маягаар бүтээгдсэн "#include" ("хамгаалагчийг оруулах")-аар давхар холболт хийх макро хамгаалалтыг нэмсэн (динамиктай тохиргооны файлуудыг үүсгэхийг хялбаршуулсан) макро нэрс).
  • configure_file() - JSON ("output_format: json") дээр шинэ гаралтын формат нэмэгдсэн.
  • c_std болон cpp_std параметрүүдэд утгуудын жагсаалтыг ашиглах чадварыг нэмсэн (жишээлбэл, "өгөгдмөл_сонголтууд: 'c_std=gnu11,c11'').
  • Файл боловсруулахдаа CustomTarget ашигладаг модулиудад нинжа хэрэглүүрийн гаралтын мессежийг өөрчлөх боломжийг нэмсэн.
  • build_target "jar" хуучирсан бөгөөд оронд нь "jar()" дуудлагыг ашиглахыг зөвлөж байна.
  • Генератор оролтыг боловсруулах орчны хувьсагчийг тохируулахын тулд 'env' параметрийг generator.process() аргад нэмсэн.
  • Гүйцэтгэх файлуудтай холбоотой бүтээх зорилтот нэрийг зааж өгөхдөө "гүйцэтгэх боломжтой('foo', 'main.c', name_suffix: 'bar')" гэх мэт дагаварууд нь нэг директорт нэмэлт гүйцэтгэгдэх файлуудыг үүсгэхийг зөвшөөрдөг.
  • Shared_module()-д дамжуулагдсан функцуудын жагсаалтыг тодорхойлдог def файлыг ашиглахын тулд exectuable() функцэд “vs_module_defs” параметрийг нэмсэн.
  • Нөөц дэд төслийн өгөгдмөл сонголтыг тохируулахын тулд find_program() функцэд 'default_options' параметрийг нэмсэн.
  • Хэрэв эхний аргумент байгаа бол хоёр дахь аргументтай харьцуулахад харьцангуй замыг буцаадаг fs.relative_to() аргыг нэмсэн. Жишээлбэл, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Дараах_symlinks параметрийг install_data(), install_headers() болон install_subdir() функцүүдэд нэмсэн; тохируулсан үед симбол холбоосууд дагадаг.
  • int.to_string() аргад "бөглөх" параметр нэмэгдсэн бөгөөд мөрийг эхний тэгээр аажмаар дүүргэсэн. Жишээлбэл, n=3-д message(n.to_string(fill: 4)) гэж дуудах нь "004" мөрийг үүсгэх болно.
  • "-fix" туг ашиглан clang-tidy хэрэгслийг ажиллуулахыг заасан clang-tidy-fix гэсэн шинэ зорилтыг нэмсэн.
  • Угсралтын зорилтын ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) дагаварыг (TARGET_SUFFIX) тодорхойлох чадварыг эмхэтгэх командад нэмсэн.
  • MESON_PACKAGE_CACHE_DIR орчны хувьсагчийг багцын кэш (дэд төсөл/багцын кэш)-д хүргэх замыг хүчингүй болгохын тулд нэмсэн бөгөөд жишээлбэл, танд хуваалцсан кэшийг хэд хэдэн төсөлд ашиглах боломжийг олгоно.
  • Тогтвортой кэшийг цэвэрлэхийн тулд "meson setup --clearcache" командыг нэмсэн.
  • "Шаардлагатай" түлхүүр үгийн дэмжлэгийг "has_*" хөрвүүлэгчийг шалгах бүх аргуудад нэмсэн. Жишээлбэл, "assert(cc.has_function('some_function'))"-ын оронд та одоо "cc.has_function('some_function') гэж зааж өгч болно. , шаардлагатай: үнэн)”.
  • хуучирсан rust_crate_type-ийн оронд ашиглах ёстой share_library(), static_library(), library() болон shared_module() функцуудад rust_abi гэсэн шинэ түлхүүр үг нэмэгдсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх