He kaimahi Red Hat i whakaatu te punaha huihuinga Goals. Tukunga o GNU Make 4.2

Richard WM Jones, kaituhi Tuhinga o mua, e mahi ana i Red Hat, whakaurua taputapu hui hou whāinga, e whai ana ki te whakakore i nga hapa me nga raru i roto i te whaipainga o te hanga i te wa e mau tonu ana te ngawari me te maarama o nga tuhinga. I hoahoatia te mahi hanga i te tau 1976, a he maha nga ngoikoretanga o te kaupapa e whakamahere ana a Goals ki te whakakore i enei ngoikoretanga me te kore e whakarereke i te kaupapa whanui.
Waehere pūtake whāinga tohaina e raihana i raro i te GPLv2+.

Ngā raru raruraru:

  • Tautoko mo te tikanga whakatau i te whakawhirinaki - "ka whakahaeretia te ako a te huihuinga mena kei te ngaro te konae whaainga, he pakeke ake ranei i tetahi o nga whakawhirinaki." Ko nga whaainga e whakamahere ana ki te whakatinana i etahi atu tikanga, penei i te tirotiro mo te noho mai o te URL, te whakatairite i nga waa whakarereke me tetahi konae, te arotake i te kete hanga i roto. kōji, whakatauritenga o nga utu arowhai, whakahaere i nga keehi whakamatautau me te kopikopiko i nga whakamatautau.
  • I te wa e tukatuka ana i nga whaainga hanga, kaore te hanga e wehe i nga konae me nga ingoa ture, na reira, karekau he tirotiro i te wa e whakahaere ana i tetahi ture, ko te konae e kii ana ka hangaia ka tino hangaia. Hei tauira, mena kei a koe he ture e kiia nei ko "whakamatautau" e whakahaere ana i nga tuhinga me nga whakamatautau, he konae te ingoa "whakamatautau" ka pohehe te hanga, katahi ka kore e karangahia nga whakamatautau, na te mea ka whakaaro a make kua hangaia te whaainga kaore e hiahiatia. tetahi mahi (mo Ki te whakatika i te raruraru i roto i te hanga, ka taea e koe te whakapūtā te ".PHONY: whakamātautau" tohutohu). Ka wehewehea nga whainga i nga konae me nga ingoa ture.

    He kaimahi Red Hat i whakaatu te punaha huihuinga Goals. Tukunga o GNU Make 4.2

  • He raruraru ki te whakarato i te tawhā kotahi anake mo nga tohutohu whakahiato.

    He kaimahi Red Hat i whakaatu te punaha huihuinga Goals. Tukunga o GNU Make 4.2

    Ko nga whaainga ka taea e koe te whakamahi i te maha o nga tawhā whakaingoatia. Hei tauira, ka taea e koe te tango wehe i te tohu o te konae patuiro mai i te ingoa:

    He kaimahi Red Hat i whakaatu te punaha huihuinga Goals. Tukunga o GNU Make 4.2

  • He raruraru kei te mahi tahi me te kaiwhakamaori anga. Hei tauira, ko te hiahia ki te whakahaere i te mawhiti o nga waahi kei roto i nga ingoa konae me nga ingoa whaiaronga, te ururua o nga rauemi ki te whakarewa i tetahi kaiwhakamaori anga motuhake i te wa e mahia ana ia whakahau, te whakamaoritanga takirua o te tohu "$" (i whakamahia i roto i te anga me te hanga), ka whai whakaaro ki nga nuku.

    Ka whakatauhia enei raruraru i roto i nga Whainga ma te whakamahi i te tohu "%" hei utu mo te "$" mo nga taurangi huihuinga ("$" ka noho noa mo te anga), ma te whakamahi i te poroporo. LALR(1), e hiahia ana koe ki te karapoti i nga ara me nga ingoa konae me nga korukī me te whakanui i nga poraka waehere me nga taiapa mingimingi. Ka whakarewahia te katoa o te poraka whakahau i roto i tetahi tauira o te anga whakahau, a ka whakaaetia te whakahōputu waehere i roto i te poraka, me te kore korero ki nga waahi motuhake.

    Ko:
    whainga: foo.o bar.o
    ${CC} ${CFLAGS} $< -o $@

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

Ētahi atu āhuatanga o Ngā Whāinga:

  • Tautoko kōwhiringa mo te whakapūtā i ngā ingoa me ngā tawhā.

    whāinga katoa = : "target"

    hono whāinga =
    "target" : "foo.o", "bar.o" { ... }

    whakahiato whāinga (ingoa) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • E rua nga aratau whakarewatanga: hanga aratau ki te whakarite i nga whaainga hanga me nga ingoa konae (hei tauira ko te konae "foo.o" e rite ana ki te whaainga "%name.o"), me te aratau whakahiato tika:

    whāinga katoa = : hono

    hono whāinga =
    "target" : "foo.o", whakahiato ("pae") { ... }

    whakahiato whāinga (ingoa) =
    "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }

  • Ko nga tikanga o te huihuinga ka whakatauhia e nga ture motuhake ka taea te whakamahi ki te whakatau i te hiahia ki te whakahiato i tetahi whaainga huihuinga. Mena ka honoa ki te aroaro o tetahi konae, ka tino whakatauhia tenei ma te tohu e pa ana ("whaainga" mo te ingoa ture me te *kōnae ("whaainga") mo te tirotiro i te konae).

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

    *kōnae("target") : *kōnae("foo.o"), *kōnae("bar.o") { ... }

  • Ka taea e te kaiwhakawhanake te tautuhi i nga huanga o nga tikanga whakahiato. Ko te haki "*kōnae" kua tautuhia e te taunoa (@{...} e tohu ana i te pehi o te whakaputanga, me te "putanga 99" e tohu ana te hiahia ki te hanga ano):

    rauhanga *kōnae (ingoakōnae) = @{
    whakamātautau -f %ingoakōnae || puta 99
    mō te f i %

    Source: opennet.ru

Tāpiri i te kōrero