Ifihan Ni ṣoki si Awọn faili ni Idagbasoke Sọfitiwia Orisun Open pẹlu GNU Rii


GNU Rii jẹ iwulo idagbasoke eyiti o ṣe ipinnu awọn apakan ti ipilẹ koodu kan pato ti o ni lati tun-ṣe ati pe o le fun awọn aṣẹ lati ṣe awọn iṣẹ wọnyẹn lori ipilẹ koodu. Paapa yii ṣe iwulo le ṣee lo pẹlu eyikeyi ede siseto ti a pese pe akopọ wọn le ṣee ṣe lati ikarahun nipasẹ fifiranṣẹ awọn ofin.

Lati lo GNU Rii, a nilo lati ni diẹ ninu awọn ofin ti o ṣalaye ibasepọ laarin awọn faili oriṣiriṣi ninu eto wa ati awọn aṣẹ fun mimu faili kọọkan ṣiṣẹ. Wọnyi ni a kọ si faili pataki kan ti a pe ni ‘ makefile ‘. Aṣẹ naa ' ṣe ' nlo ipilẹ data ' makefile ati awọn akoko iyipada to kẹhin ti awọn faili lati pinnu eyi ti gbogbo awọn faili ni lati tun ṣe lẹẹkansii.

Awọn akoonu ti Makefile kan

Ni gbogbogbo ‘ ṣe awọn faili ‘ ni awọn ohun marun marun ninu eyiti o jẹ: awọn ofin t’ọtọ, awọn ofin ti o fojuhan, awọn asọye iyipada, awọn itọsọna, ati awọn asọye.

  1. An Ofin ti o han gbangba ṣalaye bi o ṣe ṣe/atunkọ ọkan tabi diẹ sii awọn faili (ti a pe ni awọn ibi-afẹde, yoo ṣalaye nigbamii) ati nigbawo lati ṣe kanna.
  2. An ofin ti ko boju mu ṣalaye bi a ṣe/ṣe atunṣe ọkan tabi diẹ sii awọn faili ti o da lori awọn orukọ wọn. O ṣe apejuwe bi orukọ faili afojusun kan ṣe ni ibatan si faili kan pẹlu orukọ ti o jọra si ibi-afẹde naa.
  3. A asọye oniyipada jẹ laini kan ti o ṣe afihan iye okun fun oniyipada kan lati rọpo nigbamii.
  4. A itọsọna jẹ itọnisọna fun ṣiṣe lati ṣe nkan pataki lakoko kika iwe apamọ.
  5. Aami ‘#’ ni a lo fun aṣoju ibẹrẹ ti ọrọìwòye inu awọn faili apẹrẹ . Laini ti o bẹrẹ pẹlu ‘#’ ni a foju kaakiri.

Alaye ti o sọ fun ṣe bii o ṣe le ṣe atunto eto kan wa lati kika ipilẹ data ti a pe ni makefile . O rọrun makefile yoo ni awọn ofin ti sintasi atẹle:

target ... : prerequisites ... 
	recipe 
... 
...

A afojusun ti ṣalaye lati jẹ faili ti o wu ti ipilẹṣẹ nipasẹ eto naa. O tun le jẹ fojusi fojusi , eyi ti yoo ṣalaye ni isalẹ. Awọn apẹẹrẹ ti awọn faili idojukọ pẹlu awọn aṣiṣẹ, awọn faili ohun tabi awọn ibi-afẹde phony bii mimọ , fi sori ẹrọ , aifi kuro ati be be lo.

A pataki ṣaaju jẹ faili kan ti a lo bi titẹ sii lati ṣẹda awọn faili afojusun.

Ohunelo kan ohunelo ni iṣe ti ṣe ṣe fun ṣiṣẹda faili afojusun ti o da lori awọn ohun ti o nilo. O ṣe pataki lati fi ohun kikọ silẹ taabu ṣaaju ohunelo kọọkan inu awọn faili ṣiṣe ayafi ti a ba ṣalaye pato ‘.RECIPEPREFIX‘ lati ṣalaye ohun kikọ miiran bi prefix si ohunelo.

final: main.o end.o inter.o start.o
	gcc -o final main.o end.o inter.o start.o
main.o: main.c global.h
	gcc -c main.c
end.o: end.c local.h global.h
	gcc -c end.c
inter.o: inter.c global.h
	gcc -c inter.c
start.o: start.c global.h
	gcc -c start.c
clean:
	rm -f main.o end.o inter.o start.o

Ninu apẹẹrẹ ti o wa loke a lo awọn faili orisun 4 C ati awọn faili akọle meji fun ṣiṣẹda pipaṣẹ ipari . Nibi faili kọọkan ‘.o’ jẹ ibi-afẹde ati ohun ti a beere ṣaaju ninu makefile . Bayi wo orukọ ibi-afẹde ti o kẹhin mimọ . O kan jẹ iṣẹ kuku ju faili afojusun kan.

Niwọn igbagbogbo a ko nilo eyi lakoko akopọ, ko kọ bi ohun pataki ṣaaju ninu awọn ofin miiran. Awọn ibi-afẹde ti ko tọka si awọn faili ṣugbọn jẹ awọn iṣe kan ni a pe ni awọn ibi-afẹde phony. Wọn kii yoo ni awọn ohun-ini ṣaaju bi awọn faili afojusun miiran.

Nipa aiyipada ṣe bẹrẹ pẹlu ibi-afẹde akọkọ ni ' makefile ' ati pe a pe ni ' ibi-afẹde aiyipada '. Ṣiyesi apẹẹrẹ wa, a ni ipari bi ibi-afẹde akọkọ wa. Niwọn igba ti awọn ohun ti o nilo rẹ pẹlu awọn faili ohun miiran miiran ni lati wa ni imudojuiwọn ṣaaju ṣiṣẹda ipari . Ọkọọkan ninu awọn ohun-iṣaaju wọnyi ni a ṣiṣẹ ni ibamu si awọn ofin tiwọn.

Atunṣe nwaye ti o ba wa awọn iyipada ti a ṣe si awọn faili orisun tabi awọn faili akọle tabi ti faili ohun ko ba si rara. Lẹhin atunto awọn faili ohun pataki, ṣe pinnu boya lati tun ṣe asopọ ipari tabi rara. Eyi gbọdọ ṣee ṣe ti faili ipari ko ba si, tabi ti eyikeyi awọn faili nkan ba jẹ tuntun ju rẹ lọ.

Nitorinaa ti a ba yi faili naa pada inter.c , lẹhinna ni ṣiṣe ṣe yoo tun ṣe akojọ faili orisun lati ṣe imudojuiwọn faili ohun naa inter.o ati lẹhinna ọna asopọ ipari .

Ninu apẹẹrẹ wa, a ni lati ṣe atokọ gbogbo awọn faili ohun lẹẹmeji ninu ofin fun ipari bi a ṣe han ni isalẹ.

final: main.o end.o inter.o start.o
	gcc -o final main.o end.o inter.o start.o

Lati yago fun iru awọn ẹda wọnyi, a le ṣafihan awọn oniyipada lati tọju atokọ ti awọn faili ohun ti o nlo ninu makefile . Nipa lilo OBJ oniyipada a le tun kọ ayẹwo makefile si iru kanna ti o han ni isalẹ.

OBJ = main.o end.o inter.o start.o
final: $(OBJ)
	gcc -o final $(OBJ)
main.o: main.c global.h
	gcc -c main.c
end.o: end.c local.h global.h
	gcc -c end.c
inter.o: inter.c global.h
	gcc -c inter.c
start.o: start.c global.h
	gcc -c start.c
clean:
	rm -f $(OBJ)

Gẹgẹ bi a ti rii ninu apẹẹrẹ makefile , a le ṣalaye awọn ofin lati nu itọsọna orisun nipa yiyọ awọn faili ohun ti aifẹ lẹhin akopọ. Ṣebi a ba ni faili ti a fojusi ti a pe ni mimọ . Bawo ni ṣe ṣe iyatọ awọn ipo meji ti o wa loke? Eyi ni imọran ti awọn ibi-afẹde phony.

Àfojúsùn phony kan ni ọkan ti kii ṣe orukọ faili gangan gaan, dipo o jẹ orukọ kan fun ohunelo lati pa ni igbakugba ti a ba beere ibeere ti o han kedere lati makefile . Idi pataki kan lati lo idojukọ phony ni lati yago fun ariyanjiyan pẹlu faili ti orukọ kanna. Idi miiran ni lati mu ilọsiwaju ṣiṣẹ.

Lati ṣe alaye nkan yii, Emi yoo fi han lilọ airotẹlẹ kan. Ohunelo fun mimọ kii yoo ṣe nipasẹ aiyipada lori ṣiṣe ṣe . Dipo o ṣe pataki lati pe kanna nipa ipinfunni aṣẹ sọ di mimọ .

.PHONY: clean
clean:
	rm -f $(OBJ)

Nisisiyi gbiyanju lati ṣẹda awọn faili fun ipilẹ koodu tirẹ. Ni ominira lati sọ asọye nibi pẹlu awọn iyemeji rẹ.