Meson build system release 1.3

Na-publish ang release ng Meson 1.3.0 build system, na ginagamit para bumuo ng mga proyekto tulad ng X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME at GTK. Ang Meson code ay nakasulat sa Python at lisensyado sa ilalim ng lisensya ng Apache 2.0.

Ang pangunahing layunin ng pagpapaunlad ng Meson ay magbigay ng isang mabilis na proseso ng pagpupulong na sinamahan ng kaginhawahan at kadalian ng paggamit. Sa halip na gumawa, ang build ay gumagamit ng Ninja toolkit bilang default, ngunit ang iba pang mga backend tulad ng xcode at VisualStudio ay maaari ding gamitin. Ang system ay may built-in na multi-platform dependency handler na nagbibigay-daan sa iyong gamitin ang Meson upang bumuo ng mga pakete para sa mga pamamahagi. Ang mga panuntunan sa pagpupulong ay itinakda sa isang pinasimpleng wikang tukoy sa domain, ang mga ito ay mahusay na nababasa at naiintindihan ng gumagamit (ayon sa ideya ng mga may-akda, ang developer ay dapat gumugol ng isang minimum na oras sa pagsulat ng mga panuntunan).

Sinusuportahan ang cross-compiling at pagbuo sa Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS at Windows gamit ang GCC, Clang, Visual Studio at iba pang compiler. Posibleng bumuo ng mga proyekto sa iba't ibang programming language, kabilang ang C, C++, Fortran, Java at Rust. Sinusuportahan ang incremental build mode, kung saan ang mga bahagi lamang na direktang nauugnay sa mga pagbabagong ginawa mula noong huling build ang muling itinayo. Maaaring gamitin ang Meson upang bumuo ng mga paulit-ulit na build, kung saan ang pagpapatakbo ng build sa iba't ibang kapaligiran ay nagreresulta sa ganap na magkaparehong mga executable.

Mga pangunahing inobasyon ng Meson 1.3:

  • Idinagdag ang opsyon na "werror: true" sa compiler check method compiler.compiles(), compiler.links() at compiler.run(), na tinatrato ang mga babala ng compiler bilang mga error (maaaring gamitin upang suriin na ang code ay binuo nang walang babala ).
  • Nagdagdag ng has_define na paraan upang suriin ang kahulugan ng simbolo sa pamamagitan ng preprocessor.
  • Ang parameter na macro_name ay idinagdag sa configure_file() function, pagdaragdag ng macro protection para sa dobleng koneksyon sa pamamagitan ng "#include" (β€œinclude guards”), na idinisenyo sa istilo ng mga macro sa wikang C (pinasimple ang paglikha ng mga configure na file na may dynamic macro names).
  • Isang bagong format ng output ang naidagdag sa configure_file() - JSON ("output_format: json").
  • Nagdagdag ng kakayahang gumamit ng mga listahan ng mga halaga sa c_std at cpp_std na mga parameter (halimbawa, β€œdefault_options: 'c_std=gnu11,c11′’).
  • Sa mga module na gumagamit ng CustomTarget upang iproseso ang mga file, ang kakayahang i-customize ang mga mensaheng output ng ninja utility ay naidagdag.
  • Ang build_target na "jar" ay hindi na ginagamit at ang "jar()" na tawag ay inirerekomenda sa halip.
  • Ang parameter na 'env' ay idinagdag sa generator.process() na paraan upang itakda ang variable ng kapaligiran kung saan ipoproseso ng generator ang input.
  • Kapag tinukoy ang mga pangalan ng target ng build na nauugnay sa mga executable, ang mga suffix gaya ng "executable('foo', 'main.c', name_suffix: 'bar')" ay pinapayagang bumuo ng mga karagdagang executable sa parehong direktoryo.
  • Idinagdag ang parameter na β€œvs_module_defs” sa exectuable() function para gumamit ng def file na tumutukoy sa listahan ng mga function na ipinasa sa shared_module().
  • Idinagdag ang parameter na 'default_options' sa function na find_program() upang itakda ang mga default na opsyon para sa fallback na subproject.
  • Idinagdag ang fs.relative_to() na pamamaraan, na nagbabalik ng relatibong landas para sa unang argumento, na nauugnay sa pangalawa, kung umiiral ang unang landas. Halimbawa, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Ang sumusunod na_symlinks na parameter ay naidagdag sa install_data(), install_headers() at install_subdir() function; kapag nakatakda, susundan ang mga simbolikong link.
  • Ang isang parameter na "fill" ay idinagdag sa int.to_string() na paraan upang unti-unting punan ang string ng mga nangungunang zero. Halimbawa, ang pagtawag sa mensahe(n.to_string(fill: 3)) para sa n=4 ay gagawa ng string na "004".
  • Nagdagdag ng bagong target, clang-tidy-fix, na tumutukoy sa pagpapatakbo ng clang-tidy utility na may flag na "-fix".
  • Ang kakayahang tukuyin ang suffix (TARGET_SUFFIX) ng target ng pagpupulong ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) ay naidagdag sa command ng compile.
  • Nagdagdag ng environment variable na MESON_PACKAGE_CACHE_DIR para i-override ang path sa package cache (subprojects/packagecache), halimbawa, na nagbibigay-daan sa iyong gumamit ng shared cache sa ilang proyekto.
  • Idinagdag ang command na "meson setup --clearcache" upang i-clear ang patuloy na cache.
  • Ang suporta para sa "kinakailangan" na keyword ay naidagdag sa lahat ng "has_*" compiler check method, halimbawa, sa halip na "assert(cc.has_function('some_function'))" maaari mo na ngayong tukuyin ang "cc.has_function('some_function' , kinakailangan: totoo)”.
  • Ang isang bagong keyword, rust_abi, ay naidagdag sa shared_library(), static_library(), library(), at shared_module() function, na dapat gamitin sa halip na ang hindi na ginagamit na rust_crate_type.

Pinagmulan: opennet.ru

Magdagdag ng komento