የሬድ ኮፍያ ሰራተኛ የጎል ማሰባሰብያ ዘዴን አቅርቧል። የGNU Make 4.2 መልቀቅ

ሪቻርድ ደብሊው.ኤም. ጆንስ፣ ደራሲ ሊብጉስትፍስበሬድ ሃት ውስጥ መሥራት፣ አስተዋውቋል አዲስ የመገጣጠም መገልገያ ግቦችየስክሪፕቶችን አጠቃላይ ቀላልነት እና ግልጽነት በመጠበቅ የሜክ መገልገያውን ጉድለቶች እና ችግሮች ለማስወገድ ያለመ። የሜክ መገልገያው በ1976 የተነደፈ ሲሆን በርካታ የፅንሰ-ሀሳባዊ ጉድለቶች አሉት። ግቦች አጠቃላይ ፅንሰ-ሀሳቡን ሳይቀይሩ እነዚህን ጉድለቶች ለመፍታት ያለሙ ናቸው።
የግብ ምንጭ ኮድ የተሰራጨው በ በ GPLv2+ ስር ፈቃድ ያለው።

ሊፈቱ የሚገቡ ችግሮች:

  • ለአንድ የጥገኝነት መፍትሄ ዘዴ ብቻ ድጋፍ—"የኢላማው ፋይል ከጥገኛዎቹ አንዱ ከጠፋ ወይም የቆየ ከሆነ የግንባታ መመሪያ ይሰራል።" ግቦች እንደ የዩአርኤል መኖርን ማረጋገጥ፣ የማሻሻያ ጊዜዎችን ከማንኛውም ፋይል ጋር ማወዳደር እና የጥቅሉን ግንባታ መገምገም ያሉ ሌሎች ዘዴዎችን ለመተግበር አቅደዋል። ኮጂየቼክሰም ንጽጽር፣ የፈተና ስብስቦችን ከተመረጡ የመዝለል ፈተናዎች ጋር ማስኬድ።
  • የግንባታ ኢላማዎችን ሲያስኬዱ፣ make በፋይሎች እና በደንብ ስሞች መካከል ያለውን ልዩነት አያሳይም፣ በዚህም ምክንያት፣ እፈጥራለሁ የሚለው ፋይል ደንቡ ሲሄድ በትክክል እንደሚፈጠር ለማረጋገጥ ምንም አይነት ቼክ የለም። ለምሳሌ፣ "test" የሚባል ደንብ የሙከራ ስክሪፕቶችን የሚያሄድ ከሆነ እና "test" የሚባል ፋይል በአጋጣሚ ከተፈጠረ፣ ሙከራዎቹ መጠራት ያቆማሉ፣ ምክንያቱም make the target is built እና ምንም አይነት እርምጃ የማይፈልግ ስለሆነ። (በዚህ ዙሪያ ለመስራት፣ make ውስጥ ያለውን ".PHONY:test" መመሪያ መግለጽ ይችላሉ።) ግቦች በፋይሎች እና በደንብ ስሞች መካከል በግልጽ ይለያል።

    የሬድ ኮፍያ ሰራተኛ የጎል ማሰባሰብያ ዘዴን አቅርቧል። የGNU Make 4.2 መልቀቅ
  • ለመገጣጠሚያ መመሪያዎች አንድ መለኪያ ብቻ በማቅረብ ላይ ችግር።

    የሬድ ኮፍያ ሰራተኛ የጎል ማሰባሰብያ ዘዴን አቅርቧል። የGNU Make 4.2 መልቀቅ

    ግቦች ማንኛውንም የተሰየሙ መለኪያዎችን ቁጥር መጠቀም ይፈቅዳሉ። ለምሳሌ፣ የስህተት ፋይል ባንዲራውን ከስሙ ለብቻው ማውጣት ይችላሉ፡

    የሬድ ኮፍያ ሰራተኛ የጎል ማሰባሰብያ ዘዴን አቅርቧል። የGNU Make 4.2 መልቀቅ
  • ከሼል ተርጓሚ ጋር መስተጋብር የሚፈጥሩ ችግሮች። ለምሳሌ፣ በፋይል እና በማውጫ ስሞች ውስጥ የቦታዎች መሸሽ መቆጣጠር አስፈላጊነት፣ ለእያንዳንዱ ትዕዛዝ የተለየ የሼል ተርጓሚ የማስጀመር የሀብት ወጪ፣ የ"$" ምልክት ድርብ ትርጓሜ (በሼል እና በሜክ ውስጥ ጥቅም ላይ የዋለ) እና ገብ።

    የተጠቀሱት ችግሮች በግቦች ውስጥ የሚፈቱት ለስብሰባ ተለዋዋጮች ("$" የሚቀረው ለቅርፊቱ ብቻ ነው) "%" የሚለውን ምልክት በመጠቀም ነው፣ ተንታኝን በመጠቀም። ላር(1), ይህም ዱካዎችን እና የፋይል ስሞችን መጥቀስ እና የኮድ ብሎኮችን በተጠማዘዘ ማሰሪያዎች መለየትን ይጠይቃል። መላው የትዕዛዝ ብሎክ የሚሄደው በአንድ የትዕዛዝ ቅርፊት ውስጥ ሲሆን በብሎኩ ውስጥ፣ በልዩ ክፍተቶች ሳይታሰር የዘፈቀደ የኮድ ቅርጸት ይፈቀዳል።

    ነበር፡
    ዒላማ፡ foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    ሆነ፡-
    "target": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

ሌሎች የዓላማ ባህሪያት፡

  • ብጁ ስሞችን እና መለኪያዎችን ለመግለጽ አማራጭ ድጋፍ፡

    ግብ ሁሉም = : "ዒላማ"

    የግብ አገናኝ =
    "target" : "foo.o", "bar.o" { ... }

    የግብ ማጠናቀሪያ (ስም) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • ሁለት የማስጀመሪያ ሁነታዎች፡ የግንባታ ኢላማዎችን ከፋይል ስሞች ጋር ለማዛመድ ሁነታ ይፍጠሩ (ለምሳሌ ፋይል "foo.o" ከዒላማ "%name.o" ጋር ይዛመዳል)፣ እና ቀጥተኛ የማጠናቀር ሁነታ፡

    ግብ ሁሉም = : አገናኝ

    የግብ አገናኝ =
    "target" : "foo.o", compile ("bar") { ... }

    የግብ ማጠናቀሪያ (ስም) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • የግንባታ ስልቶች የሚገለጹት የግንባታ ኢላማ እንደገና መገንባት እንዳለበት ወይም እንደሌለበት ለመወሰን በሚረዱ ልዩ ህጎች ነው። የፋይል መኖር አስፈላጊ ከሆነ፣ ይህ በግልጽ የሚገለጸው ተገቢውን ባንዲራ ("ለደንብ ስም" እና ለፋይል ፍተሻ *ፋይል ("ታርጌት") በመጠቀም ነው።

    "target" : "foo.o", "bar.o" { ... }

    *ፋይል("target") : *ፋይል("foo.o"), *ፋይል("bar.o") { ... }

  • ገንቢው ብጁ የግንባታ ስትራቴጂ ባንዲራዎችን መግለጽ ይችላል። የ"*ፋይል" ባንዲራ በነባሪነት (@{…} የውጤት መጨናነቅን ያመለክታል፣ እና "ውጣ 99" እንደገና መገንባት አስፈላጊ መሆኑን ያሳያል፡

    ታክቲክ *ፋይል (የፋይል ስም) = @{
    የሙከራ -f %የፋይል ስም || መውጫ 99
    ለ f በ%

    ምንጭ: opennet.ru

በDDoS ጥበቃ፣ VPS VDS አገልጋዮች ለጣቢያዎች አስተማማኝ ማስተናገጃ ይግዙ 🔥 አስተማማኝ የድር ጣቢያ ማስተናገጃ በዲዶኤስ ጥበቃ፣ በቪፒኤስ ቪዲኤስ አገልጋዮች ይግዙ | ProHoster