Meson build system release 0.51

Nai-publish bumuo ng paglabas ng system Meson 0.51, 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 ang cross-compile at pagbuo sa Linux, 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.51:

  • Nagdagdag ng suporta para sa transparent na pagbuo ng mga kasalukuyang proyekto na gumagamit ng mga script ng build ng CMake. Ang Meson ay maaari na ngayong direktang bumuo ng mga simpleng subproject (tulad ng mga solong aklatan) gamit ang CMake module, katulad ng mga karaniwang subproject (kabilang ang mga subproject ng CMake ay maaaring ilagay sa direktoryo ng mga subproject);
  • Para sa lahat ng ginamit na compiler, ang paunang pagsubok ay kasama sa pamamagitan ng pagpupulong at pagpapatupad ng mga simpleng test file (sanity check), hindi limitado sa pagsubok sa mga flag na tinukoy ng user para sa mga cross-compiler (mula ngayon, ang mga compiler na native sa kasalukuyang platform ay sinusuri din) .
  • Idinagdag ang kakayahang tukuyin ang mga opsyon sa command line na ginagamit sa panahon ng cross-compilation, na may binding sa pamamagitan ng pagtukoy ng prefix ng platform bago ang opsyon. Dati, ang mga opsyon sa command line ay sumasaklaw lamang sa mga katutubong build at hindi maaaring tukuyin para sa cross-compilation. Nalalapat na ngayon ang mga opsyon sa command line hindi alintana kung ikaw ay gumagawa ng natively o cross-compile, na tinitiyak na ang native at cross-build ay nagbubunga ng magkaparehong resulta;
  • Nagdagdag ng kakayahang tukuyin ang flag na "--cross-file" nang higit sa isang beses sa command line upang maglista ng maraming cross-file;
  • Nagdagdag ng suporta para sa ICL compiler (Intel C/C++ Compiler) para sa Windows platform (ICL.EXE at ifort);
  • Nagdagdag ng paunang suporta sa toolkit para sa mga Xtensa CPU (xt-xcc, xt-xc++, xt-nm);
  • Ang pamamaraang "get_variable" ay naidagdag sa object na "dependency", na nagbibigay-daan sa iyong makuha ang halaga ng isang variable nang hindi isinasaalang-alang ang uri ng kasalukuyang dependency (halimbawa, dep.get_variable(pkg-config : 'var- pangalan', cmake : 'COP_VAR_NAME));
  • Nagdagdag ng bagong argumento ng mga pagpipilian sa target na pagpupulong, "link_language", upang tahasang tukuyin ang wikang ginagamit kapag tumatawag sa linker. Halimbawa, maaaring tawagan ng pangunahing Fortran program ang C/C++ code, na awtomatikong pipili ng C/C++ kapag dapat gamitin ang Fortran linker;
  • Ang paghawak ng mga flag ng preprocessor ng CPPFLAGS ay nabago. Samantalang ang Meson ay dati nang nag-imbak ng CPPFLAGS at mga flag ng compilation na tukoy sa wika (CFLAGS, CXXFLAGS) nang hiwalay, ang mga ito ay pinoproseso na ngayon nang hindi mapaghihiwalay at ang mga flag na nakalista sa CPPFLAGS ay ginagamit bilang isa pang pinagmumulan ng mga flag ng compilation para sa mga wikang sumusuporta sa kanila;
  • Ang output ng custom_target at custom_target[i] ay maaari na ngayong gamitin bilang mga argumento sa link_with at link_whole operations;
  • Ang mga generator ay mayroon na ngayong kakayahang tumukoy ng mga karagdagang dependency gamit ang opsyong β€œdepends” (halimbawa, generator(program_runner, output: ['@[protektado ng email]'], depende: exe));
  • Nagdagdag ng static na opsyon sa find_library upang payagan ang paghahanap na isama lamang ang mga statically linked na library;
  • Para sa python.find_installation, ang kakayahang matukoy ang pagkakaroon ng isang ibinigay na module ng Python para sa isang partikular na bersyon ng Python ay naidagdag;
  • Nagdagdag ng bagong module na unstable-kconfig para sa pag-parse ng mga kconfig file;
  • Nagdagdag ng bagong command na "subprojects foreach", na kumukuha ng command na may mga argumento at pinapatakbo ito sa lahat ng direktoryo ng subproject;

Pinagmulan: opennet.ru

Magdagdag ng komento