Richard Jones (Richard WM Jones), autor , zaposlen u tvrtki Red Hat, nova alatka za sastavljanje , usmjerena na rješavanje nedostataka i problema u make alatu, dok zadržava opću jednostavnost i razumljivost skripti. Alat make je dizajniran 1976. godine i ima nekoliko konceptualnih nedostataka, a u Ciljevima se planira ukloniti te nedostatke, bez promjene opće koncepcije.
Izvorni kod Ciljeva pod GPLv2+ licencom.
:
- Podrška samo jednoj taktici rješavanja zavisnosti — 'alat za sastavljanje se pokreće ako ciljni datoteka ne postoji, ili je starija od neke od zavisnosti'. U Ciljevima se planira implementirati i druge taktike, poput provjere postojanja URL-a, usporedbe vremena izmjene s bilo kojom datotekom, procjene izrade paketa u , usporedbe kontrolnih zbrojeva, pokretanja testnih setova s povremenim propuštanjem testova.
- Pri obradi ciljeva izrade alat make ne razdvaja datoteke i imena pravila, i kao rezultat toga, nedostaje provjera da li će se prilikom pokretanja pravila zaista stvoriti datoteka koja je najavljena. Na primjer, ako postoji pravilo s imenom 'test', koje pokreće skripte s testovima, a slučajno se stvori datoteka s imenom 'test', testovi će prestati biti pozivani, jer će make smatrati da je cilj sastavljen i da ne zahtijeva izvršavanje bilo kakvih akcija (da bi se izbjegao problem u make-u može se navesti direktiva '.PHONY: test'). Ciljevi jasno razdvajaju datoteke i imena pravila.

- Problem s davanjem samo jednog parametra za upute za sastavljanje.

U Ciljevima se predlaže korištenje proizvoljnog broja imenovanih parametara. Na primjer, može se posebno istaknuti iz naziva oznaka za datoteku za ispravljanje pogrešaka:

- Problemi s interakcijom s shell tumačem. Na primjer, potreba za kontrolom escapiranja razmaka u imenima datoteka i direktorija, trošenje resursa na pokretanje zasebnog shell tumača za svaku naredbu, dvostruko tumačenje simbola '$' (koristi se i u shell-u i u make-u), uzimanje u obzir uvlačenja.
Navedeni problemi rješavaju se u Ciljevima korištenjem simbola '%' umjesto '$' za varijable sastavljanja ('$' ostaje samo za shell), primjenom parsera , koji zahtijeva stavljanje putanja i imena datoteka u navodnike i označavanje blokova s kodom s vitičastim zagradama. Cijeli blok se pokreće u jednoj instanci ljuske, a unutar bloka dopušteno je proizvoljno formatiranje koda, bez obzira na posebne razmake.
Bilo je:
cilj: foo.o bar.o
${CC} ${CFLAGS} $< -o $@Postalo je:
«cilj»: «foo.o», «bar.o» {
LAGS %< -o %@
}
Ostale značajke ciljeva:
- Opcionalna podrška za postavljanje proizvoljnih imena i parametara:
cilj svi = : «cilj»
cilj povezivanje =
«cilj»: «foo.o», «bar.o» { … }cilj kompajlirati (ime) =
«%ime.o» : «%ime.c», «dep.h» { LAGS -c $^ -o $@ } - Dva načina izvođenja: način make za usklađivanje ciljeva s imenima datoteka (npr. datoteka «foo.o» odgovara cilju «%ime.o»), i način izravnog pokretanja kompajlacije:
cilj svi = : poveži
cilj povezivanje =
«cilj»: «foo.o», kompajliraj («bar») { … }cilj kompajlirati (ime) =
«%ime.o» : «%ime.c», «dep.h» { LAGS -c $^ -o $@ } - Taktika izgradnje određena je posebnim pravilima, uz pomoć kojih se može odrediti potreba za ponovnom izgradnjom cilja. Ako je vezano za prisutnost datoteke, to se izričito određuje kroz odgovarajući znak («cilj» za ime pravila i *file(«cilj») za provjeru datoteke).
«cilj»: «foo.o», «bar.o» { … }
*file(«cilj») : *file(«foo.o»), *file(«bar.o») { … }
- Programer može definirati proizvoljne oznake za izgrađene taktike. Oznaka «*file» je definirana po defaultu (@{…} označava isključenje ispisa, a «exit 99» signalizira potrebu za ponovnom izgradnjom):
taktika *file (naziv_datoteke) = @{
test -f %naziv_datoteke || exit 99
za f u %Izvor: opennet.ru



