Ukukhutshwa kwenkqubo yokwakhiwa kweMeson 1.3

Inkqubo yokwakha ye-Meson 1.3.0 ikhutshwe, esetyenziselwa ukwakha iiprojekthi ezifana ne-X.Org Server, i-Mesa, i-Lighttpd, i-systemd, i-GStreamer, i-Wayland, i-GNOME kunye ne-GTK. Ikhowudi ye-Meson ibhalwe kwi-Python kwaye ilayisenisi phantsi kwelayisensi ye-Apache 2.0.

Injongo ephambili yophuhliso lweMeson kukubonelela ngesantya esiphezulu senkqubo yendibano edityaniswe ngokulula kunye nokusebenziseka ngokulula. Endaweni yokwenza into eluncedo, i-Ninja toolkit isetyenziswa ngokungagqibekanga xa kusakhiwa, kodwa ezinye izinto ezingasemva ezifana ne-xcode kunye ne-VisualStudio nazo zingasetyenziswa. Inkqubo inendawo eyakhelwe-ngaphakathi yokuxhomekeka kwiplatform evumela ukuba usebenzise iMeson ukwakha iipakethe zokusasazwa. Imithetho yeNdibano ichazwe kulwimi olulula lwe-domain-specific, ifundeka kakhulu kwaye iyaqondakala kumsebenzisi (njengoko kuhloswe ngababhali, umphuhlisi kufuneka achithe ubuncinci bexesha lokubhala imithetho).

Ixhasa ukuhlanganiswa kunye nokwakhiwa kwe-cross kwi-Linux, i-Illumos / i-Solaris, i-FreeBSD, i-NetBSD, i-DragonFly BSD, i-Haiku, i-macOS kunye ne-Windows usebenzisa i-GCC, i-Clang, i-Visual Studio kunye nabanye abaqulunqi. Kunokwenzeka ukwakha iiprojekthi kwiilwimi ezahlukeneyo zokucwangcisa, kuquka iC, C ++, Fortran, Java kunye neRust. Imowudi yokwakha eyongeziweyo iyaxhaswa, apho kuphela amacandelo anxulumene ngokuthe ngqo notshintsho olwenziweyo ukusukela kulwakhiwo lokugqibela lwakhiwa ngokutsha. I-Meson inokusetyenziselwa ukuvelisa ulwakhiwo oluphinda-phindayo, apho ukusebenza kolwakhiwo kwiindawo ezahlukeneyo kubangela ukuveliswa kweefayile ezifanayo ngokupheleleyo.

Iinguqulelo eziphambili zeMeson 1.3:

  • Yongeza ukhetho "impazamo: yinyani" kwindlela yokujonga umqokeleli compiler.compiles(), compiler.links() kunye ne compiler.run(), ephatha izilumkiso zomqokeleli njengempazamo (inokusetyenziswa ukujonga ukuba ikhowudi yakhiwe ngaphandle kwezilumkiso ).
  • Yongeziwe ine_define indlela yokukhangela ingcaciso yesimboli nge-preprocessor.
  • I-macro_name parameter yongezwe kwi-configure_file () umsebenzi, yongeza ukhuseleko olukhulu lodibaniso oluphindiweyo nge "#include" ("bandakanya abalindi"), eyilwe ngohlobo lweemacros kulwimi lwe-C (ukwenza lula ukuyilwa koqwalaselo lwefayile oluguquguqukayo. amagama amakhulu).
  • Ifomati entsha yemveliso yongezwe kuconfigure_file() - JSON ("output_format: json").
  • Kongezwe ukukwazi ukusebenzisa uluhlu lwamaxabiso kwiparameters c_std kunye cpp_std (umzekelo, “default_options: 'c_std=gnu11,c11′').
  • Kwiimodyuli ezisebenzisa i-CustomTarget ukucubungula iifayile, ukukwazi ukwenza ngokwezifiso imveliso yemiyalezo nge-ninja utility yongezwe.
  • I-build_target "jar" iyekisiwe kwaye "ijar()" ifowuni iyacetyiswa endaweni yoko.
  • I-'env' iparamitha yongezwe kwi-generator.process() indlela yokuseta ukuguquguquka kokusingqongileyo apho umenzi azakuqhubekekisa igalelo.
  • Xa ukhankanya amagama ekujoliswe kuwo anxulunyaniswa nezinto eziphunyezwayo, izimamva ezinje ngo "executable('foo', 'main.c', name_suffix: 'bar')" zivumelekile ukuba zivelise ukuphunyezwa okongezelelekileyo kulawulo olufanayo.
  • Yongeza i "vs_module_defs" iparameter kuphunyezo() umsebenzi ukusebenzisa ifayile ye def echaza uluhlu lwemisebenzi egqithiselwe kukwabelwana_module().
  • Iparameter eyongeziweyo 'default_options' ukufumana_iprogram () umsebenzi ukuseta iinketho ezingagqibekanga zeproject yokubuyisela umva.
  • Indlela eyongeziweyo ye-fs.relative_to(), ebuyisela umendo ozalanayo wengxabano yokuqala, ngokunxulumene neyesibini, ukuba umendo wokuqala ukhona. Umzekelo, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Ezi zilandelayo_symlinks iparamitha yongezwe kwi-install_data (), install_headers () kunye ne-install_subdir () imisebenzi; xa iseti, amakhonkco omfuziselo alandelwa.
  • Iparamitha "yokugcwalisa" yongezwe kwindlela ye-int.to_string () yokuzalisa umtya ngokunyuswayo ngoziro okhokelayo. Umzekelo, ukufowunela umyalezo(n.to_string(fill: 3)) ye-n=4 iya kuvelisa umtya "004".
  • Kongezwe into ekujoliswe kuyo entsha, i-clang-tidy-fix, echaza ukuqhuba i-clang-tidy eluncedo nge-"-lungisa" iflegi.
  • Ukukwazi ukucacisa isimamva (TARGET_SUFFIX) sendibano ekujoliswe kuyo ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) yongezwe kumyalelo woqulunqo.
  • Ukutshintsha kwemeko-bume eyongeziweyo MESON_PACKAGE_CACHE_DIR ukubhala ngaphezulu indlela eya kwi-cache yephakheji (subprojects/packagecache), umzekelo, ikuvumela ukuba usebenzise i-cache ekwabelwana ngayo kwiiprojekthi ezininzi.
  • Yongezwe "meson setup --clearcache" umyalelo wokucima i-cache eqhubekayo.
  • Inkxaso yegama elingundoqo "elifunekayo" longezwe kuzo zonke iindlela zokujonga umqokeleli "has_*", umzekelo, endaweni ye "assert(cc.has_function('some_function'))" ngoku ungacacisa "cc.has_function('some_function' , iyafuneka: yinyani)”.
  • Igama elitsha elingundoqo, i-rust_abi, yongezwe kwi-shared_library (), i-static_library (), ilayibrari (), kunye ne-shared_module () imisebenzi, ekufuneka isetyenziswe endaweni yohlobo lwe-rust_crate_eyehliweyo.

umthombo: opennet.ru

Yongeza izimvo