Richard WM Jones, autor , töötades ettevĂ”ttes Red Hat, uus kokkupanekuteenus , mille eesmĂ€rgiks on likvideerida puudusi ja probleeme make utiliidis, sĂ€ilitades samas skriptide ĂŒldise lihtsuse ja arusaadavuse. Make utiliit projekteeriti 1976. aastal ja sellel on mitmeid kontseptuaalseid puudujÀÀke, Goalsis plaanitakse need puudujÀÀgid kĂ”rvaldada, muutes samas ĂŒldist kontseptsiooni.
Goalsi lÀhtekood on litsentseeritud GPLv2+ all.
:
- Ainult ĂŒhe sĂ”ltuvuste lahendamise taktika toetamine â «kokkupanekujuhise kĂ€ivitamine, kui sihtfail puudub vĂ”i on vanem kui ĂŒkski sĂ”ltuvus». Goalsis plaanitakse rakendada ka muid taktikaid, nĂ€iteks URL-i olemasolu kontrollimine, muudetud aja vĂ”rdlemine mistahes failiga, paketi koostamise hindamine , kontrollsummade vĂ”rdlemine, testide kĂ€ivitamine valikulise testide vahelejĂ€tmisega.
- Kogumis eesmĂ€rkide töötlemisel ei eralda utiliit make faile ja reeglite nimesid, mis tĂ€hendab, et puudub kontroll selle ĂŒle, kas reegli kĂ€ivitamisel luuakse kindlasti fail, mille loomist on deklareeritud. NĂ€iteks juhul, kui reegel nimega "test", mis kĂ€ivitab testiskripte, loob juhuslikult faili nimega "test", ei kutsuta teste enam esile, kuna make arvab, et eesmĂ€rk on tĂ€idetud ja ei nĂ”ua edasiste toimingute tegemist (probleemi vĂ€ltimiseks vĂ”ib make'is mÀÀrata direktiivi ".PHONY: test"). Goals eristab selgelt faile ja reeglite nimesid.

- Probleem, mis seisneb ainult ĂŒhe parameetri esitamisel koostamisjuhistes.

Goals soovitab kasutada suvalist arvu nimetatud parameetreid. NĂ€iteks saab eraldi eristada nime kaudu silumisfaili tunnust:

- Probleemid interaktsioonis shell-tĂ”lgiga. NĂ€iteks vajadus kontrollida tĂŒhikute ekraanimist failide ja kaustade nimedes, ressursside raiskamine iga kĂ€su tĂ€itmisel eraldi shell-tĂ”lgi kĂ€ivitamiseks, kahemĂ”ttelisus sĂŒmboli "$" tĂ”lgendamisel (kasutatakse nii shellis kui ka make'is), ja sisendite arvestamine.
Antud probleemid lahendatakse Goals'is sĂŒmboli "%" kasutamisega, mitte "$" kogumispetturite jaoks ("$" jÀÀb ainult shell'i jaoks), kasutades parsi. , mis nĂ”uab teede ja failide nimede ĂŒmbritsemist jutumĂ€rkidega ja koodiblokkide eraldamist sĂŒmbolitega. Kogu bloki kĂ€sk kĂ€ivitatakse ĂŒhes shelli eksemplaris, samas kui bloki sees lubatakse suvalist koodi vormindamist, madala juurdepÀÀsu spetsiaalsetele ruumidele.
Oli:
target: foo.o bar.o
${CC} ${CFLAGS} $< -o $@Muudetud:
"target": "foo.o", "bar.o" {
LAGS < -o %@
}
Goalsi muud omadused:
- Valikuline tugi suvaliste nimede ja parameetrite mÀÀramiseks:
goal all = : "target"
goal link =
"target" : "foo.o", "bar.o" { ⊠}goal compile (name) =
«%name.o» : «%name.c», «dep.h» { LAGS -c $^ -o $@ } - Kaks kĂ€ivitamisreĆŸiimi: make-reĆŸiim, et sobitada kogumispetturid failinimedele (nt fail "foo.o" vastab kogule "%name.o"), ja otsekompileerimise reĆŸiim:
goal all = : link
goal link =
"target" : "foo.o", compile ("bar") { ⊠}goal compile (name) =
«%name.o» : «%name.c», «dep.h» { LAGS -c $^ -o $@ } - Kogude koostamise taktika mÀÀratakse spetsiaalsete reeglite kaudu, mille abil saab mÀÀrata koostamise eesmÀrgi uuesti koostamise vajaduse. Kui on seotud faili olemasolu kontrollimine, siis mÀÀratakse see selgelt vastava tunnuse kaudu («target» reegli nime jaoks ja *file(«target») faili kontrollimiseks).
"target" : "foo.o", "bar.o" { ⊠}
*file(«target») : *file(«foo.o»), *file(«bar.o») { ⊠}
- Arendaja saab mÀÀrata omapĂ€raseid koostamise taktika tunnuseid. Tunnus «*file» on mÀÀratud vaikevÀÀrtusena (@{âŠ} viitab vĂ€ljundi su suppressionâile ja «exit 99» annab mĂ€rku uuesti koostamise vajadusest):
tactic *file (failure_name) = {@{
test -f %filename || exit 99
for f in %Allikas: opennet.ru



