ఒక Red Hat ఉద్యోగి గోల్స్ అసెంబ్లీ సిస్టమ్‌ను సమర్పించారు. GNU మేక్ విడుదల 4.2

రిచర్డ్ WM జోన్స్, రచయిత libguestfs, Red Hatలో పని చేస్తున్నారు సమర్పించిన కొత్త అసెంబ్లీ యుటిలిటీ లక్ష్యాలు, స్క్రిప్ట్‌ల యొక్క మొత్తం సరళత మరియు అవగాహనను కొనసాగిస్తూ, తయారీ యొక్క ప్రయోజనంలో లోపాలు మరియు సమస్యలను తొలగించడం లక్ష్యంగా పెట్టుకుంది. మేక్ యుటిలిటీ 1976లో రూపొందించబడింది మరియు అనేక సంభావిత లోపాలను కలిగి ఉంది; సాధారణ భావనను మార్చకుండా ఈ లోపాలను తొలగించడానికి లక్ష్యాలు యోచిస్తున్నాయి.
లక్ష్యాల సోర్స్ కోడ్ ద్వారా పంపిణీ చేయబడింది GPLv2+ కింద లైసెన్స్ పొందింది.

పరిష్కరించాల్సిన సమస్యలు:

  • ఒకే ఒక డిపెండెన్సీ రిజల్యూషన్ వ్యూహానికి మద్దతు - “లక్ష్య ఫైల్ తప్పిపోయినట్లయితే లేదా డిపెండెన్సీలలో ఒకటి కంటే పాతది అయితే అసెంబ్లీ సూచన అమలు చేయబడుతుంది.” URL ఉనికిని తనిఖీ చేయడం, ఏదైనా ఫైల్‌తో సవరణ సమయాలను సరిపోల్చడం, ప్యాకేజీ బిల్డ్ ఇన్‌ను మూల్యాంకనం చేయడం వంటి ఇతర వ్యూహాలను అమలు చేయడానికి లక్ష్యాలు ప్రణాళికలు వేస్తున్నాయి. కోజి, చెక్‌సమ్‌ల పోలిక, పరీక్షల ఎంపిక స్కిప్పింగ్‌తో పరీక్ష కేసులను అమలు చేయడం.
  • బిల్డ్ టార్గెట్‌లను ప్రాసెస్ చేస్తున్నప్పుడు, make ఫైల్‌లను మరియు రూల్ పేర్లను వేరు చేయదు మరియు ఫలితంగా, ఒక నియమాన్ని అమలు చేస్తున్నప్పుడు, అది సృష్టించినట్లు క్లెయిమ్ చేసే ఫైల్ వాస్తవానికి సృష్టించబడుతుందనేది తనిఖీ చేయడం లేదు. ఉదాహరణకు, మీరు పరీక్షలతో స్క్రిప్ట్‌లను అమలు చేసే "పరీక్ష" అనే నియమాన్ని కలిగి ఉంటే, "పరీక్ష" అనే ఫైల్ అనుకోకుండా సృష్టించబడితే, అప్పుడు పరీక్షలు ఇకపై పిలవబడవు, ఎందుకంటే లక్ష్యం నిర్మించబడిందని మరియు అవసరం లేదని మేక్ పరిగణిస్తుంది. ఏదైనా చర్య (తయారీలో ఉన్న సమస్యను పరిష్కరించేందుకు, మీరు “.PHONY: test” ఆదేశాన్ని పేర్కొనవచ్చు). గోల్స్ ఫైల్‌లు మరియు రూల్ పేర్లను స్పష్టంగా వేరు చేస్తాయి.

    ఒక Red Hat ఉద్యోగి గోల్స్ అసెంబ్లీ సిస్టమ్‌ను సమర్పించారు. GNU మేక్ విడుదల 4.2

  • అసెంబ్లీ సూచనల కోసం ఒక పరామితిని మాత్రమే అందించడంలో సమస్య.

    ఒక Red Hat ఉద్యోగి గోల్స్ అసెంబ్లీ సిస్టమ్‌ను సమర్పించారు. GNU మేక్ విడుదల 4.2

    పేరు పెట్టబడిన పారామితుల యొక్క ఏకపక్ష సంఖ్యను ఉపయోగించడానికి లక్ష్యాలు మిమ్మల్ని అనుమతిస్తుంది. ఉదాహరణకు, మీరు పేరు నుండి డీబగ్ ఫైల్ యొక్క చిహ్నాన్ని విడిగా సంగ్రహించవచ్చు:

    ఒక Red Hat ఉద్యోగి గోల్స్ అసెంబ్లీ సిస్టమ్‌ను సమర్పించారు. GNU మేక్ విడుదల 4.2

  • షెల్ ఇంటర్‌ప్రెటర్‌తో పరస్పర చర్య చేయడంలో సమస్యలు. ఉదాహరణకు, ఫైల్ మరియు డైరెక్టరీ పేర్లలో ఖాళీలు తప్పించుకోవడాన్ని నియంత్రించాల్సిన అవసరం, ప్రతి ఆదేశాన్ని అమలు చేస్తున్నప్పుడు ప్రత్యేక షెల్ ఇంటర్‌ప్రెటర్‌ను ప్రారంభించడంలో వనరుల వ్యర్థం, “$” అక్షరానికి డబుల్ ఇంటర్‌ప్రెటేషన్ (షెల్ మరియు మేక్ రెండింటిలోనూ ఉపయోగించబడుతుంది), ఇండెంటేషన్లను పరిగణనలోకి తీసుకోవడం.

    అసెంబ్లీ వేరియబుల్స్ కోసం "$" బదులుగా "%" చిహ్నాన్ని ఉపయోగించడం ద్వారా ఈ సమస్యలు లక్ష్యాలలో పరిష్కరించబడతాయి ("$" షెల్ కోసం మాత్రమే మిగిలి ఉంటుంది), పార్సర్‌ని ఉపయోగించి LALR(1), మీరు కోట్‌లతో పాత్‌లు మరియు ఫైల్ పేర్లను చుట్టుముట్టాలి మరియు కర్లీ బ్రేస్‌లతో కోడ్ బ్లాక్‌లను హైలైట్ చేయాలి. మొత్తం కమాండ్ బ్లాక్ కమాండ్ షెల్ యొక్క ఒక సందర్భంలో ప్రారంభించబడింది మరియు బ్లాక్ లోపల, ప్రత్యేక ఖాళీలను సూచించకుండా ఏకపక్ష కోడ్ ఫార్మాటింగ్ అనుమతించబడుతుంది.

    ఉంది:
    లక్ష్యం: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    ఇది మారింది:
    "టార్గెట్": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

లక్ష్యాల యొక్క ఇతర లక్షణాలు:

  • ఏకపక్ష పేర్లు మరియు పారామితులను పేర్కొనడానికి ఐచ్ఛిక మద్దతు:

    లక్ష్యం అన్నీ = : "లక్ష్యం"

    గోల్ లింక్ =
    "టార్గెట్" : "foo.o", "bar.o" { ...}

    గోల్ కంపైల్ (పేరు) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@}

  • రెండు లాంచ్ మోడ్‌లు: ఫైల్ పేర్లతో బిల్డ్ టార్గెట్‌లను సరిపోల్చడానికి మోడ్‌ను తయారు చేయండి (ఉదాహరణకు, ఫైల్ "foo.o" టార్గెట్ "%name.o"తో సరిపోలుతుంది), మరియు డైరెక్ట్ కంపైలేషన్ మోడ్:

    లక్ష్యం అన్నీ =: లింక్

    గోల్ లింక్ =
    "టార్గెట్" : "foo.o", కంపైల్ ("బార్") { ...}

    గోల్ కంపైల్ (పేరు) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@}

  • అసెంబ్లీ వ్యూహాలు ప్రత్యేక నియమాల ద్వారా నిర్ణయించబడతాయి, ఇవి అసెంబ్లీ లక్ష్యాన్ని మళ్లీ సమీకరించాల్సిన అవసరాన్ని గుర్తించడానికి ఉపయోగించవచ్చు. ఫైల్ ఉనికికి లింక్ చేయబడితే, ఇది సంబంధిత గుర్తు (రూల్ పేరు కోసం "లక్ష్యం" మరియు ఫైల్‌ను తనిఖీ చేయడానికి * ఫైల్ ("టార్గెట్")) ద్వారా స్పష్టంగా నిర్ణయించబడుతుంది.

    "టార్గెట్" : "foo.o", "bar.o" { ...}

    *file("టార్గెట్") : *file("foo.o"), *file("bar.o") { ...}

  • డెవలపర్ అసెంబ్లీ వ్యూహాల యొక్క ఏకపక్ష లక్షణాలను నిర్వచించగలరు. "*ఫైల్" ఫ్లాగ్ డిఫాల్ట్‌గా నిర్వచించబడింది (@{...} అవుట్‌పుట్ అణచివేతను సూచిస్తుంది మరియు "నిష్క్రమణ 99" పునర్నిర్మాణ అవసరాన్ని సూచిస్తుంది):

    వ్యూహం *ఫైల్ (ఫైల్ పేరు) = @{
    పరీక్ష -f % ఫైల్ పేరు || నిష్క్రమించు 99
    % లో f కోసం

    మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి