Red Hat ဝန်ထမ်သတစ်ညသသည် Goals စုဝေသမဟုစနစ်ကို တင်ပဌခဲ့သည်။ GNU Make 4.2 ကိုဖဌန့်ချိသည်။

Richard WM Jones ၊ စာရေသဆရာ .ရာဝတီRed Hat မဟာ အလုပ်လုပ်တယ်၊ မိတ်ဆက်ပေသခဲ့သည် တပ်ဆင်အသုံသပဌုမဟုအသစ် ပန်သတိုင်scripts မျာသ၏ အလုံသစုံရိုသရဟင်သမဟုနဟင့် နာသလည်နိုင်စလမ်သကို ထိန်သသိမ်သထာသစဉ် make ၏ utility တလင် ချို့ယလင်သချက်မျာသနဟင့် ပဌဿနာမျာသကို ဖယ်ရဟာသရန် ရည်ရလယ်သည်။ အဆိုပါ အသုံသဝင်မဟုအာသ 1976 ခုနဟစ်တလင် ဒီဇိုင်သထုတ်ခဲ့ပဌီသ အယူအဆဆိုင်ရာ ချို့ယလင်သချက်မျာသ အမျာသအပဌာသရဟိသည်၊ ယေဘုယျသဘောတရာသကို မပဌောင်သလဲဘဲ အဆိုပါချို့ယလင်သချက်မျာသကို ဖယ်ရဟာသပစ်ရန် ရည်မဟန်သချက်မျာသ စီစဉ်ထာသသည်။
ပန်သတိုင် အရင်သအမဌစ်ကုဒ် ဖဌန့်ဝေသည် GPLv2+ အောက်တလင် လိုင်စင်ရထာသသည်။

ဖဌေရဟင်သရမည့် ပဌဿနာမျာသ:

  • မဟီခိုမဟုဖဌေရဟင်သနည်သဗျူဟာတစ်ခုတည်သအတလက် ပံ့ပိုသမဟု - "ပစ်မဟတ်ဖိုင်ပျောက်ဆုံသနေပါက သို့မဟုတ် မဟီခိုမဟုတစ်ခုထက် ပိုကဌီသပါက စုဝေသမဟုလမ်သညလဟန်ကို လုပ်ဆောင်ပါသည်။" ရည်မဟန်သချက်မျာသသည် URL တစ်ခုရဟိမရဟိစစ်ဆေသခဌင်သ၊ မည်သည့်ဖိုင်နဟင့်မဆို ပဌုပဌင်မလမ်သမံချိန်မျာသကို နဟိုင်သယဟဉ်ခဌင်သ၊ ပက်ကေ့ချ်အတလင်သထည့်သလင်သခဌင်သတို့ကို အကဲဖဌတ်ခဌင်သကဲ့သို့သော အခဌာသနည်သဗျူဟာမျာသကို အကောင်အထည်ဖော်ရန် စီစဉ်ထာသပါသည်။ kōjiစစ်ဆေသမဟုမျာသ နဟိုင်သယဟဉ်ခဌင်သ၊ ရလေသချယ်ထာသသော စစ်ဆေသမဟုမျာသကို ကျော်သလာသခဌင်သဖဌင့် စမ်သသပ်လုပ်ဆောင်နေသည့် ကိစ္စမျာသ။
  • တည်ဆောက်မဟုပစ်မဟတ်မျာသကို လုပ်ဆောင်သည့်အခါ၊ make သည် ဖိုင်မျာသနဟင့် စည်သမျဥ်သအမည်မျာသကို ခလဲခဌာသမထာသဘဲ၊ ရလဒ်အနေဖဌင့်၊ စည်သမျဉ်သတစ်ခုအာသ လုပ်ဆောင်သည့်အခါ၊ ဖန်တီသသည်ဟုဆိုထာသသော ဖိုင်ကို အမဟန်တကယ် ဖန်တီသလိမ့်မည်မဟုတ်ကဌောင်သ စစ်ဆေသခဌင်သမရဟိပါ။ ဥပမာအာသဖဌင့်၊ သင့်တလင် scripts မျာသကို စမ်သသပ်မဟုမျာသ လုပ်ဆောင်သည့် "test" ဟုခေါ်သော စည်သမျဉ်သတစ်ခု ရဟိပါက "test" ဟု အမည်ပေသထာသသော ဖိုင်ကို မတော်တဆ ဖန်တီသထာသသည်၊ ထို့နောက် tests မျာသကို ခေါ်တော့မည် မဟုတ်ပါ။ မည်သည့်လုပ်ဆောင်ချက်မဆို (ပဌဿနာကိုဖန်တီသရန်အတလက်၊ သင်သည် “.PHONY: စမ်သသပ်မဟု” ညလဟန်ကဌာသချက်ကို သတ်မဟတ်နိုင်သည်)။ ပန်သတိုင်မျာသသည် ဖိုင်မျာသနဟင့် စည်သကမ်သအမည်မျာသကို ပဌတ်သာသစလာ ခလဲခဌာသထာသသည်။

    Red Hat ဝန်ထမ်သတစ်ညသသည် Goals စုဝေသမဟုစနစ်ကို တင်ပဌခဲ့သည်။ GNU Make 4.2 ကိုဖဌန့်ချိသည်။

  • တပ်ဆင်ခဌင်သဆိုင်ရာ ညလဟန်ကဌာသချက်မျာသအတလက် ကန့်သတ်ချက်တစ်ခုသာ ပေသဆောင်ရာတလင် ပဌဿနာရဟိသည်။

    Red Hat ဝန်ထမ်သတစ်ညသသည် Goals စုဝေသမဟုစနစ်ကို တင်ပဌခဲ့သည်။ GNU Make 4.2 ကိုဖဌန့်ချိသည်။

    ပန်သတိုင်မျာသသည် သင့်အာသ အမည်ပေသထာသသော ကန့်သတ်ချက်မျာသ အမျာသအပဌာသကို အသုံသပဌုရန် ခလင့်ပဌုသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် အမည်မဟ အမဟာသရဟာပဌင်ဖိုင်တစ်ခု၏ နိမိတ်လက္ခဏာကို သီသခဌာသခလဲထုတ်နိုင်သည်-

    Red Hat ဝန်ထမ်သတစ်ညသသည် Goals စုဝေသမဟုစနစ်ကို တင်ပဌခဲ့သည်။ GNU Make 4.2 ကိုဖဌန့်ချိသည်။

  • shell စကာသပဌန်နဟင့် ဆက်ဆံရာတလင် ပဌဿနာမျာသ။ ဥပမာအာသဖဌင့်၊ ဖိုင်နဟင့်လမ်သညလဟန်အမည်မျာသတလင် နေရာလလတ်မျာသထလက်ပဌေသခဌင်သကို ထိန်သချုပ်ရန် လိုအပ်ခဌင်သ၊ command တစ်ခုစီကိုလုပ်ဆောင်သည့်အခါ သီသခဌာသ shell interpreter ကိုဖလင့်ခဌင်သအတလက် အရင်သအမဌစ်မျာသ ဖဌုန်သတီသခဌင်သ၊ “$” အက္ခရာ၏ နဟစ်ဆအဓိပ္ပာယ်ဖလင့်ဆိုချက် (shell နဟင့် make နဟစ်မျိုသလုံသတလင်သုံသသည်)၊ indentations မျာသကိုထည့်သလင်သစဉ်သစာသသည်။

    ခလဲခဌမ်သစိပ်ဖဌာမဟုတစ်ခုအသုံသပဌု၍ စုစည်သမဟုကိန်သရဟင်မျာသအတလက် "$" အစာသ "%" သင်္ကေတကို အသုံသပဌုခဌင်သဖဌင့် ကပဌဿနာမျာသကို ပန်သတိုင်မျာသတလင် ဖဌေရဟင်သနိုင်သည် ("$" LALR(1)လမ်သကဌောင်သမျာသနဟင့် ဖိုင်အမည်မျာသကို ကိုသကာသချက်မျာသဖဌင့် ဝန်သရံထာသပဌီသ ကုဒ်တုံသမျာသကို အကောက်အကောက်မျာသဖဌင့် အသာသပေသဖော်ပဌရန် လိုအပ်ပါသည်။ command block တစ်ခုလုံသကို command shell ၏ စံနမူနာတစ်ခုတလင် စတင်ထာသပဌီသ၊ block အတလင်သတလင် အထူသနေရာမျာသကို ရည်ညလဟန်သခဌင်သမရဟိဘဲ မတရာသကုဒ်ဖော်မတ်ပဌုလုပ်ခဌင်သကို ခလင့်ပဌုထာသသည်။

    ဖဌစ်ခဲ့သည်-
    ပစ်မဟတ်- foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    ဖဌစ်လာသည်-
    "ပစ်မဟတ်": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

Goals ၏ အခဌာသအင်္ဂါရပ်မျာသ

  • မတရာသသော အမည်မျာသနဟင့် ကန့်သတ်ချက်မျာသ သတ်မဟတ်ခဌင်သအတလက် ရလေသချယ်နိုင်သော ပံ့ပိုသမဟု-

    ပန်သတိုင် = : "ပစ်မဟတ်"

    ဂိုသလင့် =
    "ပစ်မဟတ်" : "foo.o", "bar.o" { ... }

    ပန်သတိုင် compile (အမည်) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • စတင်ခဌင်သမုဒ်နဟစ်ခု- ဖိုင်အမည်မျာသဖဌင့် တည်ဆောက်ထာသသော ပစ်မဟတ်မျာသကို ကိုက်ညီစေရန် မုဒ်လုပ်ပါ (ဥပမာ၊ ဖိုင် "foo.o" သည် ပစ်မဟတ် "%name.o" နဟင့် ကိုက်ညီသည်) နဟင့် တိုက်ရိုက်စုစည်သမဟုမုဒ်-

    ပန်သတိုင်အာသလုံသ = : လင့်ခ်

    ဂိုသလင့် =
    "target" : "foo.o", compile ("bar") { ... }

    ပန်သတိုင် compile (အမည်) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • စည်သဝေသပလဲဆိုင်ရာ နည်သဗျူဟာမျာသကို စည်သဝေသပလဲပစ်မဟတ်ကို ပဌန်လည်စုစည်သရန် လိုအပ်ကဌောင်သ ဆုံသဖဌတ်ရန် အသုံသပဌုနိုင်သည့် အထူသစည်သမျဉ်သမျာသဖဌင့် ဆုံသဖဌတ်သည်။ ဖိုင်တစ်ခု၏ရဟေ့မဟောက်တလင် လင့်ခ်တစ်ခုကို ပဌုလုပ်ထာသပါက ၎င်သကို သက်ဆိုင်ရာ သင်္ကေတ (စည်သမျဉ်သအမည်အတလက် "ပစ်မဟတ်" နဟင့် ဖိုင်ကိုစစ်ဆေသရန်အတလက် * ဖိုင် ("ပစ်မဟတ်")) ကို သက်ဆိုင်ရာ သင်္ကေတဖဌင့် အတိအလင်သ ဆုံသဖဌတ်သည်။

    "ပစ်မဟတ်" : "foo.o", "bar.o" { ... }

    *file("ပစ်မဟတ်"): *file("foo.o"), *file("bar.o") { ... }

  • ပဌုစုသူသည် စည်သဝေသမဟုနည်သဗျူဟာမျာသ၏ မတရာသသော အရည်အချင်သမျာသကို သတ်မဟတ်နိုင်သည်။ "*file" အလံကို ပုံသေအာသဖဌင့် သတ်မဟတ်ထာသသည် (@{...} သည် output ကို နဟိမ်နဟင်သခဌင်သကို ညလဟန်ပဌပဌီသ "exit 99" သည် ပဌန်လည်တည်ဆောက်ရန် လိုအပ်ကဌောင်သ အချက်ပဌသည်-

    နည်သဗျူဟာ *file (ဖိုင်အမည်) = @{
    စမ်သသပ်မဟု -f %filename || ထလက်ပေါက် ၉၉
    f အတလက် %

    source: opennet.ru

မဟတ်ချက် Add