Meson build system release 0.52

Nai-publish bumuo ng paglabas ng system Meson 0.52, na ginagamit upang 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 naibigay lisensyado sa ilalim ng Apache 2.0.

Ang pangunahing layunin ng pagbuo ng Meson ay upang magbigay ng mataas na bilis ng proseso ng pagpupulong kasama ng kaginhawahan at kadalian ng paggamit. Sa halip na make utility, ginagamit ng default na build ang toolkit Ninja, ngunit posible ring gumamit ng iba pang mga backend, tulad ng xcode at VisualStudio. 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. Tinukoy ang mga panuntunan sa pagpupulong sa isang pinasimpleng wikang tukoy sa domain, lubos na nababasa at nauunawaan ng user (tulad ng nilayon ng mga may-akda, dapat gumugol ang developer ng pinakamababang oras sa pagsusulat ng mga panuntunan).

Sinusuportahan cross-compile at bumuo 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 lang 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 pagbuo ng ganap na magkaparehong mga executable na file.

Ang pangunahing mga inobasyon Meson 0.52:

  • Nagdagdag ng pang-eksperimentong suporta para sa Webassembly gamit ang Emscripten bilang isang compiler;
  • Ang suporta para sa mga platform ng Illumos at Solaris ay lubos na napabuti at dinala sa kondisyong gumagana;
  • Posibleng balewalain ang mga script ng internationalization na nakabatay sa gettext kung walang naka-install na gettext tool ang system (dati, may ipinakitang error kapag ginagamit ang i18n module sa mga system na walang gettext);
  • Pinahusay na suporta para sa mga static na aklatan. Maraming mga problema kapag gumagamit ng na-uninstall na mga static na aklatan ay nalutas na;
  • Idinagdag ang kakayahang gumamit ng mga diksyunaryo upang magtalaga ng mga variable ng kapaligiran. Kapag tumatawag sa environment(), ang unang elemento ay maaari na ngayong tukuyin bilang isang diksyunaryo kung saan ang mga variable ng kapaligiran ay tinukoy sa key/value form. Ang mga variable na ito ay ililipat sa environment_object na parang isa-isang itinakda sa pamamagitan ng set() method. Ang mga diksyunaryo ay maaari na ring ipasa sa iba't ibang mga function na sumusuporta sa isang "env" argument;
  • Nagdagdag ng function na "runtarget alias_target(target_name, dep1, ...)" na lumilikha ng bagong target na build sa unang antas na matatawag sa napiling build backend (hal. "ninja target_name"). Ang target na build na ito ay hindi nagpapatakbo ng anumang mga command, ngunit tinitiyak na ang lahat ng mga dependency ay binuo;
  • Pinagana ang awtomatikong setting ng PKG_CONFIG_SYSROOT_DIR na environment variable sa panahon ng cross-compilation kung mayroong sys_root na setting sa seksyong "[properties]";
  • Idinagdag ang opsyong "--gdb-path" upang matukoy ang path patungo sa debugger ng GDB kapag tinukoy ang opsyong "--gdb testname" upang patakbuhin ang GDB gamit ang tinukoy na script ng pagsubok;
  • Nagdagdag ng awtomatikong pag-detect ng clang-tidy build target para patakbuhin ang linter na ito kasama ang lahat ng source file. Ang target ay nilikha kung ang clang-tidy ay magagamit sa system at ang ".clang-tidy" (o "_clang-tidy") na file ay tinukoy sa root ng proyekto;
  • Nagdagdag ng dependency('blocks') para sa paggamit sa Clang extension Bloke;
  • Ang mga view ng linker at compiler ay pinaghihiwalay, na nagpapahintulot sa iba't ibang kumbinasyon ng mga compiler at linker na magamit;
  • Nagdagdag ng all_dependencies() method sa SourceSet objects bilang karagdagan sa all_sources() method;
  • Sa run_project_tests.py, ang opsyong "--only" ay idinagdag upang piliing magpatakbo ng mga pagsubok (halimbawa, "python run_project_tests.py β€”only fortran python3");
  • Ang function na find_program() ay mayroon na ngayong kakayahang maghanap para lamang sa mga kinakailangang bersyon ng isang programa (natutukoy ang bersyon sa pamamagitan ng pagpapatakbo ng programa gamit ang opsyong "-bersyon");
  • Upang kontrolin ang pag-export ng mga simbolo, ang pagpipiliang vs_module_defs ay idinagdag sa shared_module() function, katulad ng shared_library();
  • Ang kconfig module ay pinalawak upang suportahan ang configure_file() para sa pagtukoy ng isang input file;
  • Idinagdag ang kakayahang tumukoy ng maramihang mga file ng input para sa mga humahawak ng "utos:" sa configure_file();
  • Ang command na "dist" para sa paglikha ng isang archive ay inilipat sa kategorya ng mga first-level na command (dati ang command ay nakatali sa ninja). Idinagdag ang opsyong "--formats" upang tukuyin ang mga uri ng mga archive na gagawin (halimbawa,
    "meson dist -formats=xztar,zip").

Pinagmulan: opennet.ru

Magdagdag ng komento