Meson 1.3 တပ်ဆင်မဟုစနစ်အာသ ဖဌန့်ချိသည်။

X.Org Server၊ Mesa၊ Lighttpd၊ systemd၊ GStreamer၊ Wayland၊ GNOME နဟင့် GTK စသည့် ပရောဂျက်မျာသကို တည်ဆောက်ရန်အတလက် အသုံသပဌုသည့် Meson 1.3.0 တည်ဆောက်မဟုစနစ်အာသ ထုတ်ဝေလိုက်ပါသည်။ Meson ကုဒ်ကို Python ဖဌင့်ရေသသာသထာသပဌီသ Apache 2.0 လိုင်စင်အောက်တလင် လိုင်စင်ရထာသသည်။

Meson ၏ အဓိက ဖလံ့ဖဌိုသတိုသတက်မဟုပန်သတိုင်သည် အဆင်ပဌေလလယ်ကူမဟုနဟင့် အသုံသပဌုရလလယ်ကူမဟုတို့နဟင့်အတူ ပေါင်သစပ်ထာသသော မဌန်နဟုန်သမဌင့် တပ်ဆင်မဟုလုပ်ငန်သစဉ်ကို ပံ့ပိုသပေသရန်ဖဌစ်သည်။ ဖန်တီသမည့်အစာသ၊ တည်ဆောက်မဟုသည် မူရင်သအတိုင်သ Ninja toolkit ကို အသုံသပဌုသော်လည်သ xcode နဟင့် VisualStudio ကဲ့သို့သော အခဌာသသော backend မျာသကိုလည်သ အသုံသပဌုနိုင်ပါသည်။ စနစ်တလင် ဖဌန့်ဝေမဟုမျာသအတလက် ပက်ကေ့ဂျ်မျာသတည်ဆောက်ရန်အတလက် Meson ကိုအသုံသပဌုရန် သင့်အာသ ခလင့်ပဌုသည့် တပ်ဆင်ထာသသည့် multi-platform မဟီခိုမဟုကိုင်တလယ်ကိရိယာတစ်ခုရဟိသည်။ စည်သဝေသပလဲစည်သမျဉ်သမျာသကို ရိုသရဟင်သသော ဒိုမိန်သ-သီသသန့်ဘာသာစကာသဖဌင့် သတ်မဟတ်ထာသပဌီသ ၎င်သတို့ကို အသုံသပဌုသူမဟ ကောင်သစလာဖတ်ရဟုနိုင်ကာ နာသလည်နိုင်သည် (စာရေသဆရာမျာသ၏ အယူအဆအရ၊ ဆော့ဖ်ဝဲရေသသာသသူသည် အနည်သဆုံသ အချိန်အတိုင်သအတာတစ်ခုအထိ စည်သမျဉ်သမျာသကို သုံသစလဲသင့်သည်)။

GCC၊ Clang၊ Visual Studio နဟင့် အခဌာသသော compilers မျာသကို အသုံသပဌု၍ Linux၊ Illumos/Solaris၊ FreeBSD၊ NetBSD၊ DragonFly BSD၊ Haiku၊ macOS နဟင့် Windows တို့တလင် အပဌန်အလဟန်စုစည်သခဌင်သနဟင့် တည်ဆောက်ခဌင်သကို ပံ့ပိုသထာသပါသည်။ C၊ C++၊ Fortran၊ Java နဟင့် Rust အပါအဝင် အမျိုသမျိုသသော ပရိုဂရမ်သမင်သဘာသာစကာသမျာသဖဌင့် ပရောဂျက်မျာသကို တည်ဆောက်နိုင်သည်။ နောက်ဆုံသတည်ဆောက်မဟုနောက်ပိုင်သတလင် ပဌုလုပ်ထာသသော အပဌောင်သအလဲမျာသနဟင့် တိုက်ရိုက်သက်ဆိုင်သည့် အစိတ်အပိုင်သမျာသကိုသာ တိုသမဌဟင့်တည်ဆောက်မုဒ်ကို ပံ့ပိုသထာသသည်။ မတူညီသောပတ်ဝန်သကျင်မျာသတလင် တည်ဆောက်မဟုကို လုပ်ဆောင်ခဌင်သဖဌင့် လုံသဝထပ်တူထပ်မျဟသော လုပ်ဆောင်ချက်မျာသကို ဖဌစ်ပေါ်စေသည့် ထပ်တလဲလဲလုပ်ဆောင်နိုင်သော တည်ဆောက်မဟုမျာသကို ဖန်တီသရန်အတလက် Meson ကို အသုံသပဌုနိုင်သည်။

Meson 1.3 ၏ အဓိက တီထလင်ဆန်သသစ်မဟုမျာသ

  • compiler သတိပေသချက်မျာသကို အမဟာသမျာသအဖဌစ် မဟတ်ယူသည့် compiler check method compiler.compiles(), compiler.links() နဟင့် compiler.run() တလင် "werror: true" ကို ထည့်သလင်သခဲ့သည် (သတိပေသချက်မပါဘဲ ကုဒ်ကို တည်ဆောက်ထာသကဌောင်သ စစ်ဆေသရန်အတလက် အသုံသပဌုနိုင်သည်။ )
  • ကဌိုတင်ပရိုဆက်ဆာအာသဖဌင့် သင်္ကေတအဓိပ္ပါယ်ကို စစ်ဆေသရန် has_define နည်သလမ်သကို ထည့်သလင်သထာသသည်။
  • macro_name ပါရာမီတာကို configure_file() လုပ်ဆောင်ချက်တလင် ထည့်သလင်သထာသပဌီသ၊ “#include” (“include guards”) မဟတဆင့် နဟစ်ထပ်ချိတ်ဆက်မဟုမျာသအတလက် macro protection ကို C language တလင် macro ပုံစံဖဌင့် ဒီဇိုင်သထုတ်ထာသခဌင်သ (ဖိုင်မျာသကို dynamic ဖဌင့် configure ပဌုလုပ်ခဌင်သကို ရိုသရဟင်သစေပါသည်။ မက်ခရိုအမည်မျာသ)။
  • အထလက်ဖော်မတ်အသစ်ကို configure_file() - JSON ("output_format: json") တလင် ထည့်သလင်သထာသပါသည်။
  • c_std နဟင့် cpp_std ကန့်သတ်ဘောင်မျာသတလင် တန်ဖိုသမျာသစာရင်သမျာသကို အသုံသပဌုနိုင်စလမ်သကို ပေါင်သထည့်ခဲ့သည် (ဥပမာ၊ “default_options: 'c_std=gnu11,c11′')။
  • ဖိုင်မျာသကိုလုပ်ဆောင်ရန် CustomTarget ကိုအသုံသပဌုသည့် module မျာသတလင်၊ ninja utility မဟ မက်ဆေ့ဂျ်အထလက်ကို စိတ်ကဌိုက်ပဌင်ဆင်နိုင်မဟုကို ထည့်သလင်သထာသသည်။
  • build_target "jar" ကို ရပ်တန့်လိုက်ပဌီသ ၎င်သအစာသ "jar()" ခေါ်ဆိုမဟုကို အကဌံပဌုထာသသည်။
  • ဂျင်နရေတာမဟ ထည့်သလင်သခဌင်သအာသ လုပ်ဆောင်ပေသမည့် ပတ်၀န်သကျင်ပဌောင်သလဲမဟုအာသ သတ်မဟတ်ရန် 'env' ပါရာမီတာကို generator.process() နည်သလမ်သသို့ ပေါင်သထည့်ထာသပါသည်။
  • executables မျာသနဟင့်ဆက်စပ်သော build ပစ်မဟတ်အမည်မျာသကို သတ်မဟတ်သောအခါ၊ "executable('foo', 'main.c', name_suffix: 'bar')" ကဲ့သို့သော နောက်ဆက်တလဲမျာသကို တူညီသော directory တလင် နောက်ထပ် executable မျာသကို ထုတ်လုပ်ရန် ခလင့်ပဌုထာသသည်။
  • shared_module().
  • အဆုတ်ပရောဂျက်ခလဲအတလက် ပုံသေရလေသချယ်မဟုမျာသသတ်မဟတ်ရန် find_program() လုပ်ဆောင်ချက်တလင် 'default_options' ပါရာမီတာကို ထည့်သလင်သခဲ့သည်။
  • ပထမလမ်သကဌောင်သရဟိလျဟင် ပထမအငဌင်သအခုံအတလက် ဆလေမျိုသလမ်သကဌောင်သကို ပဌန်ပေသသည့် fs.relative_to() နည်သလမ်သကို ထည့်သလင်သထာသသည်။ ဥပမာ၊ "fs.relative_to('/prefix/lib'၊ '/prefix/bin') == '../lib')"။
  • အောက်ပါ_symlinks ဘောင်မျာသကို install_data(), install_headers() နဟင့် install_subdir() လုပ်ဆောင်ချက်မျာသသို့ ပေါင်သထည့်လိုက်သည်၊ သတ်မဟတ်လိုက်သောအခါ၊ သင်္ကေတလင့်ခ်မျာသကို လိုက်နာပါသည်။
  • စာသာသကို သုညဖဌင့် ဆက်တိုက်ဖဌည့်ရန် "ဖဌည့်စလက်" ပါရာမီတာကို int.to_string() နည်သလမ်သသို့ ပေါင်သထည့်ထာသပါသည်။ ဥပမာအာသဖဌင့်၊ n=3 အတလက် ခေါ်ဆိုသော မက်ဆေ့ဂျ်(n.to_string(fill: 4)) သည် "004" ဟူသော စာကဌောင်သကို ထုတ်ပေသလိမ့်မည်။
  • clang-tidy utility ကို "-fix" အလံဖဌင့် လုပ်ဆောင်ပေသသည့် ပစ်မဟတ်အသစ်၊ clang-tidy-fix ကို ထပ်ထည့်ထာသသည်။
  • စုဝေသမဟုပစ်မဟတ် ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) ၏ နောက်ဆက်တလဲ (TARGET_SUFFIX) ကို သတ်မဟတ်နိုင်မဟုအာသ compile command တလင် ထည့်သလင်သထာသပါသည်။
  • ဥပမာအာသဖဌင့်၊ သင်သည် ပရောဂျက်မျာသစလာတလင် မျဟဝေထာသသော ကက်ရဟ်တစ်ခုကို အသုံသပဌုခလင့်ပေသသည့် ပက်ကေ့ချ်ရဟ် (subprojects/packagecache) သို့ လမ်သကဌောင်သကို အစာသထိုသရန် MESON_PACKAGE_CACHE_DIR ကို ထပ်ထည့်ထာသသည်။
  • persistent cache ကိုရဟင်သလင်သရန် "meson setup --clearcache" command ကိုထည့်သလင်သခဲ့သည်။
  • “လိုအပ်သည်” သော့ချက်စာလုံသအတလက် ပံ့ပိုသမဟုကို “has_*” စုစည်သမဟုစစ်ဆေသသည့်နည်သလမ်သမျာသအာသလုံသတလင် ပေါင်သထည့်လိုက်ပါပဌီ၊ ဥပမာ၊ “assert(cc.has_function('some_function'))” အစာသ “cc.has_function('some_function')” ကို ယခုသင်သတ်မဟတ်နိုင်ပါပဌီ လိုအပ်သည်: true)"
  • ကန့်သတ်ထာသသော rust_crate_type အစာသ အသုံသပဌုသင့်သည့်သော့ချက်စာလုံသအသစ် rust_abi ကို shared_library(), static_library(), library(), နဟင့် shared_module() လုပ်ဆောင်ချက်မျာသသို့ ထည့်သလင်သထာသပါသည်။

source: opennet.ru

မဟတ်ချက် Add