Ukukhishwa kwesistimu yokwakha ye-Meson 1.3

Isistimu yokwakha ye-Meson 1.3.0 isikhishiwe, esetshenziselwa ukwakha amaphrojekthi afana ne-X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME kanye ne-GTK. Ikhodi ye-Meson ibhalwe nge-Python futhi ilayisensi ngaphansi kwelayisensi ye-Apache 2.0.

Umgomo oyinhloko wokuthuthukiswa kwe-Meson ukuhlinzeka ngesivinini esiphezulu senqubo yokuhlanganisa kuhlanganiswe nokunethezeka nokusebenziseka kalula. Esikhundleni se-make utility, ikhithi yamathuluzi ye-Ninja isetshenziswa ngokuzenzakalelayo uma yakha, kodwa ezinye izinto ezingemuva njenge-xcode ne-VisualStudio nazo zingasetshenziswa. Uhlelo lunesibambi sokuncika sezingxenyekazi eziningi esakhelwe ngaphakathi esikuvumela ukuthi usebenzise i-Meson ukuze wakhe amaphakheji okusabalalisa. Imithetho yomhlangano icaciswe ngolimi olwenziwe lula oluqondene nesizinda, ifundeka kakhulu futhi iqondakala kumsebenzisi (njengoba kuhloswe ababhali, umthuthukisi kufanele asebenzise ubuncane besikhathi ebhala imithetho).

Isekela ukuhlanganiswa nokwakhiwa kwe-Linux, i-Illumos/Solaris, i-FreeBSD, i-NetBSD, i-DragonFly BSD, i-Haiku, i-macOS ne-Windows isebenzisa i-GCC, i-Clang, i-Visual Studio nezinye izihlanganisi. Kungenzeka ukwakha amaphrojekthi ngezilimi ezihlukahlukene zokuhlela, okuhlanganisa i-C, C++, Fortran, Java neRust. Imodi yokwakha ekhuphukayo iyasekelwa, lapho kuphela izingxenye ezihlobene ngokuqondile nezinguquko ezenziwe kusukela ekwakhiweni kokugcina zakhiwa kabusha. I-Meson ingasetshenziswa ukukhiqiza izakhiwo eziphindaphindwayo, lapho ukusebenzisa isakhiwo ezindaweni ezihlukene kubangela ukukhiqizwa kwamafayela asebenzisekayo afana ngokuphelele.

Ukuqanjwa okuyinhloko kwe-Meson 1.3:

  • Kwengezwe inketho ethi “iphutha: iqiniso” kundlela yokuhlola inhlanganisela compiler.compiles(), compiler.links() kanye ne-compiler.run(), ephatha izexwayiso zabahlanganisi njengamaphutha (ingasetshenziswa ukuhlola ukuthi ikhodi yakhiwe ngaphandle kwezixwayiso ).
  • Kwengeziwe has_define indlela yokuhlola incazelo yophawu nge-preprocessor.
  • Ipharamitha ye-macro_name yengezwe kumsebenzi we-configure_file(), wengeza ukuvikeleka okukhulu kokuxhumeka okuphindwe kabili nge-"#include" ("faka onogada"), eklanywe ngesitayela sama-macros ngolimi C (okwenza lula ukudalwa kwamafayela okumisa nge-dynamic amagama amakhulu).
  • Ifomethi entsha yokuphumayo yengezwe ku-configure_file() - JSON ("output_format: json").
  • Kwengezwe amandla okusebenzisa uhlu lwamanani kupharamitha ethi c_std ne-cpp_std (isibonelo, “izinketho_okuzenzakalelayo: 'c_std=gnu11,c11′').
  • Kumamojula asebenzisa i-CustomTarget ukuze acubungule amafayela, ikhono lokwenza ngokwezifiso ukukhishwa kwemilayezo ngosizo lwe-ninja lengeziwe.
  • I-build_target "imbiza" yehlisiwe futhi ikholi ye-"jar()" iyanconywa esikhundleni salokho.
  • Ipharamitha ye-'env' yengezwe ku-generator.process() indlela yokusetha ukuhluka kwemvelo lapho i-generator izocubungula okokufaka.
  • Uma kucaciswa amagama okuhloswe ngawo ukwakha ahlotshaniswa nokusebenzisekayo, izijobelelo ezifana ne-"executable('foo', 'main.c', name_suffix: 'bar')" zivunyelwe ukukhiqiza okusebenzisekayo okwengeziwe kuhla lwemibhalo olufanayo.
  • Kwengezwe ipharamitha ethi “vs_module_defs” kumsebenzi we-exectuable() ukuze usebenzise ifayela le-def elichaza uhlu lwemisebenzi edluliselwe ku-shared_module().
  • Kwengezwe ipharamitha ethi 'default_options' ukuze uthole_uhlelo() umsebenzi ukuze kusethwe okukhethwa kukho okuzenzakalelayo kwephrojekthi encane yokubuyela emuva.
  • Kwengezwe indlela ye-fs.relative_to(), ebuyisela indlela ehlobene yempikiswano yokuqala, uma kuqhathaniswa neyesibili, uma indlela yokuqala ikhona. Isibonelo, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Ipharamitha elandelayo ye-symlinks yengezwe ku-install_data(), install_headers() kanye ne-install_subdir() imisebenzi; uma isethiwe, izixhumanisi ezingokomfanekiso ziyalandelwa.
  • Ipharamitha "yokugcwalisa" yengezwe endleleni ye-int.to_string() ukuze ugcwalise ngokuqhubekayo iyunithi yezinhlamvu ngoziro abaholayo. Isibonelo, ukushayela umlayezo(n.to_string(fill: 3)) ku-n=4 kuzokhiqiza iyunithi yezinhlamvu ethi "004".
  • Kwengezwe ithagethi entsha, i-clang-tidy-fix, ecacisa ukusebenzisa insiza ye-clang-tidy ngefulegi elithi "-lungisa".
  • Ikhono lokucacisa isijobelelo (TARGET_SUFFIX) sokuhlanganisa okuqondiwe ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) lengeziwe emyalweni wokuhlanganiswa.
  • Kwengezwe okuhlukile kwemvelo okungu-MESON_PACKAGE_CACHE_DIR ukuze kweqe indlela eya kunqolobane yephakheji (amaphrojekthi amancane/inqolobane yephakheji), isibonelo, okukuvumela ukuthi usebenzise inqolobane eyabiwe kumaphrojekthi ambalwa.
  • Kwengezwe umyalo "wokusetha kwe-meson --clearcache" ukuze kusule inqolobane eqhubekayo.
  • Usekelo lwegama elingukhiye “elidingekayo” lengezwe kuzo zonke izindlela zokuhlola i-“has_*” yomhlanganisi, isibonelo, esikhundleni sokuthi “assert(cc.has_function('some_function'))” manje ungacacisa “cc.has_function('some_function') , okudingekayo: kuyiqiniso)”.
  • Igama elingukhiye elisha, i-rust_abi, lengeziwe kumsebenzi ohlanganyelwe_we-shared_library(), static_library(), library(), kanye ne-shared_module() imisebenzi, okufanele isetshenziswe esikhundleni sohlobo_lwe-rust_crate_oluhoxisiwe.

Source: opennet.ru

Engeza amazwana