Ua hōʻike kekahi limahana Red Hat i ka ʻōnaehana hui Goals. Hoʻokuʻu ʻia o GNU Make 4.2

Richard WM Jones, mea kākau libguestfs, hana ma Red Hat, hoopuka pono hui hou pahu hopu, i manaʻo e hoʻopau i nā hemahema a me nā pilikia i ka pono o ka hana ʻoiai e mālama ana i ka maʻalahi a me ka hoʻomaopopo ʻana o nā palapala. Ua hoʻolālā ʻia ka make utility ma 1976 a he nui nā hemahema o ka manaʻo; Hoʻolālā nā pahuhopu e hoʻopau i kēia mau hemahema me ka ʻole e hoʻololi i ka manaʻo maʻamau.
Pahuhopu kumu code mahele ʻia e laikini ma lalo o GPLv2+.

Nā pilikia e hoʻoponopono ʻia:

  • Kākoʻo no hoʻokahi wale nō manaʻo hoʻoholo hilinaʻi - "holo ʻia ke aʻo ʻana i ka hui inā nalo ka faila i makemake ʻia a ʻoi aku paha ma mua o kekahi o nā mea hilinaʻi." Hoʻolālā nā pahuhopu e hoʻokō i nā hana ʻē aʻe, e like me ka nānā ʻana i ka loaʻa ʻana o kahi URL, ka hoʻohālikelike ʻana i nā manawa hoʻololi me kekahi faila, ka loiloi ʻana i ka pūʻolo i kūkulu ʻia i loko. kōji, ka hoʻohālikelike ʻana i nā checksums, ka holo ʻana i nā hihia hoʻāʻo me ka lele koho ʻana o nā hoʻokolohua.
  • I ka hana ʻana i nā pahuhopu kūkulu, ʻaʻole e hoʻokaʻawale i nā faila a me nā inoa lula, a ʻo ka hopena, ʻaʻohe ʻike i ka wā e holo ana i kahi lula, e hana maoli ʻia ka faila āna i ʻōlelo ai e hana ʻia. No ka laʻana, inā loaʻa iā ʻoe kahi lula i kapa ʻia ʻo "test" e holo ana i nā palapala me nā hoʻāʻo, ua hana hewa ʻia kahi faila i kapa ʻia ʻo "test", a laila ʻaʻole e kāhea hou ʻia nā hoʻokolohua, no ka mea e noʻonoʻo ʻo make ua kūkulu ʻia ka pahuhopu a ʻaʻole koi. kekahi hana (no ka hoʻoponopono ʻana i ka pilikia ma ka hana, hiki iā ʻoe ke kuhikuhi i ke kuhikuhi ".PHONY: ho'āʻo"). Hoʻokaʻawale loa nā pahuhopu i nā faila a me nā inoa lula.

    Ua hōʻike kekahi limahana Red Hat i ka ʻōnaehana hui Goals. Hoʻokuʻu ʻia o GNU Make 4.2

  • Pilikia me ka hāʻawi ʻana i hoʻokahi wale nō ʻāpana no nā ʻōlelo aʻoaʻo hui.

    Ua hōʻike kekahi limahana Red Hat i ka ʻōnaehana hui Goals. Hoʻokuʻu ʻia o GNU Make 4.2

    Hāʻawi nā Pahuhopu iā ʻoe e hoʻohana i ka helu ʻole o nā ʻāpana i kapa ʻia. No ka laʻana, hiki iā ʻoe ke wehe kaʻawale i ka hōʻailona o kahi faila debug mai ka inoa:

    Ua hōʻike kekahi limahana Red Hat i ka ʻōnaehana hui Goals. Hoʻokuʻu ʻia o GNU Make 4.2

  • Nā pilikia e pili ana me ka unuhi ʻōlelo shell. No ka laʻana, ka pono e hoʻomalu i ka pakele ʻana o nā hakahaka ma nā faila a me nā inoa papa kuhikuhi, ka pau ʻana o nā kumuwaiwai i ka hoʻomaka ʻana i kahi unuhi unuhi ʻokoʻa i ka wā e hoʻokō ai i kēlā me kēia kauoha, ka wehewehe ʻelua o ke ʻano "$" (hoʻohana ʻia i ka shell a me ka hana), e noʻonoʻo ana i nā indentations.

    Hoʻoholo ʻia kēia mau pilikia ma Goals ma o ka hoʻohana ʻana i ka hōʻailona "%" ma kahi o "$" no nā ʻano hoʻololi hui ("$" koe wale no ka pūpū), me ka hoʻohana ʻana i kahi parser. LALR(1), e koi iā ʻoe e hoʻopuni i nā ala a me nā inoa faila me nā puʻupuʻu a hōʻike i nā poloka code me nā pale pale. Hoʻokuʻu ʻia ka poloka kauoha holoʻokoʻa i hoʻokahi manawa o ka shell command, a i loko o ka poloka, ʻae ʻia ka hoʻopili ʻana i nā code arbitrary, me ka ʻole o ka kuhikuhi ʻana i nā wahi kūikawā.

    ʻO ia:
    pahu hopu: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

    Ua lilo:
    "target": "foo.o", "bar.o" {
    %CC %CFLAGS %< -o %@
    }

Nā hiʻohiʻona ʻē aʻe o Goals:

  • Kākoʻo koho no ka wehewehe ʻana i nā inoa a me nā ʻāpana ʻokoʻa:

    pahu hopu a pau = : "pahuhopu"

    loulou pahu hopu =
    "target" : "foo.o", "bar.o" { ... }

    pahu hopu hōʻuluʻulu (inoa) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • ʻElua mau ʻano hoʻomaka: hana i ke ʻano e hoʻokūkū i nā pahuhopu kūkulu me nā inoa faila (e laʻana, ʻo ka faila "foo.o" e pili ana i ka pahuhopu "%name.o"), a me ke ʻano hoʻopili pololei:

    pahu hopu a pau = : loulou

    loulou pahu hopu =
    "target" : "foo.o", hoʻohui ("bar") { ... }

    pahu hopu hōʻuluʻulu (inoa) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Hoʻoholo ʻia nā manaʻo hui e nā lula kūikawā i hiki ke hoʻohana ʻia e hoʻoholo i ka pono e hoʻohui hou i kahi pahuhopu hui. Inā hana ʻia kahi loulou i kahi faila, a laila e hoʻoholo pololei ʻia kēia ma o ka hōʻailona like ("target" no ka inoa lula a me *file ("target") no ka nānā ʻana i ka faila).

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

    * waihona ("pahuhopu") : * waihona ("foo.o"), * waihona ("bar.o") { ... }

  • Hiki i ka mea hoʻomohala ke wehewehe i nā hiʻohiʻona kūʻokoʻa o nā loea hui. Ua wehewehe ʻia ka hae "* faile" e ka paʻamau (@{...} e hōʻike ana i ka hoʻopau ʻana i ka hoʻopuka ʻana, a ʻo ka "puka 99" e hōʻailona i ka pono no ke kūkulu hou ʻana):

    hoʻolālā * faila (inoa waihona) = @{
    ho'āʻo -f % filename || puka 99
    no ka f i %

    Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka