Okwu mmalite maka Makefiles na mmepe ngwanrọ mepere emepe yana GNU Mee


GNU Make bụ akụrụngwa mmepe nke na-ekpebi akụkụ nke otu koodu ntọala a ga-achịkọta ma nwee ike ịnye iwu ka ịrụ ọrụ ndị ahụ na ntọala koodu. Enwere ike iji ihe amere rụọ ọrụ n'asụsụ mmemme ọ bụla ma ọ bụrụhaala na enwere ike ịme mkpokọta ha site na shei site na ịnye iwu.

Iji jiri GNU Mee, anyị kwesịrị ịnwe ụfọdụ iwu nke na-akọwa mmekọrịta dị n'etiti faịlụ dị iche iche na mmemme anyị yana iwu maka imelite faịlụ ọ bụla. Edere ihe ndị a na faịlụ pụrụ iche a na-akpọ ''makefile'. Iwu 'mee' na-eji 'makefile' data base na oge mgbanwe ikpeazụ nke faịlụ iji kpebie nke faịlụ niile ga-achịkọta ọzọ.

Ọdịnaya nke Makefile

N'ozuzu ''makefiles' nwere ụdị ihe ise dị iche iche bụ: iwu doro anya, iwu doro anya, nkọwa agbanwe agbanwe, ntuziaka, na nkọwa.

  1. Otu iwu doro anya na-akọwapụta otu esi eme/megharịa otu faịlụ ma ọ bụ karịa (a ga-akọwa ya ma emechaa) na mgbe a ga-eme otu ihe ahụ.
  2. Otu iwu doro anya na-akọwapụta otu esi eme/megharịa otu faịlụ ma ọ bụ karịa dabere na aha ha. Ọ na-akọwa etu aha faịlụ lekwasịrị anya si metụta otu faịlụ nwere aha yiri ebumnuche.
  3. A nkọwa mgbanwe bụ ahịrị na-akọwapụta uru eriri maka mgbanwe ga-anọchi ma emechaa.
  4. A directive bụ ntụziaka maka ime ihe pụrụ iche mgbe ị na-agụ makefile.
  5. A na-eji akara '#' na-anọchi anya mmalite nke okwu n'ime makefiles. A na-eleghara ahịrị malite na '#' naanị.

Ozi na-agwa mere ka esi achịkọta usoro sitere na ịgụ ebe data akpọrọmakefile. Ihe dị mfe makefile ga-enwe iwu nke syntax ndị a:

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

A na-akọwaebumnuche ka ọ bụrụ faịlụ mmepụta nke mmemme ahụ mepụtara. O nwekwara ike ịbụatụmatụ nzuzu, nke a ga-akọwa n'okpuru ebe a. Ọmụmaatụ nke faịlụ ebumnuche gụnyere executables, faịlụ ihe ma ọ bụ ebumnuche nzuzu dị ka dị ọcha, wụnye, wepu wdg.

A ihe achọrọ bụ faịlụ a na-eji dị ka ntinye iji mepụta faịlụ ebumnuche.

A recipe bụ ihe na-eme na-eme maka imepụta faịlụ ebumnuche dabere na ihe achọrọ. Ọ dị mkpa itinye agwa tab tupu uzommeputa ọ bụla n'ime makefilesọ gwụla ma anyị akọwapụtaghị '.RECIPEPREFIX' mgbanwe iji kọwaa ụfọdụ agwa ndị ọzọ dị ka prefix na uzommeputa.

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

N'ihe atụ dị n'elu, anyị jiri faịlụ isi iyi 4 C na faịlụ nkụnye eji isi mee maka ịmepụta ikpeazụ. N'ebe a faịlụ '.o' ọ bụla bụ ma ebumnuche yana ihe achọrọ n'ime makefile. Ugbu a leba anya na aha ebumnuche ikpeazụdị ọcha. Ọ bụ naanị omume karịa faịlụ ebumnuche.

Ebe ọ bụ na anyị anaghị achọ nke a mgbe a na-achịkọta ya, edeghị ya dị ka ihe achọrọ na iwu ọ bụla ọzọ. Ebumnuche ndị na-adịghị ezo aka na faịlụ mana bụ naanị omume ka a na-akpọ phony targets. Ha agaghị enwe mkpa ọ bụla dị ka faịlụ ndị ọzọ lekwasịrị anya.

Site na ndabara meena-amalite na ebumnuche mbụ na ‘makefile’ ma kpọọ ya ‘ihe mgbaru ọsọ ndabara’. N'ịtụle ihe atụ anyị, anyị nwereikpeazụ dị ka ebumnuche mbụ anyị. Ebe ọ bụ na ihe achọrọ ya gụnyere faịlụ ihe ndị ọzọ a ga-emelite tupu ịmepụta ikpeazụ. A na-ahazi nke ọ bụla n'ime ihe ndị a dị ka iwu nke aka ha si dị.

Nchikota na-eme ma ọ bụrụ na enwere mgbanwe emere na faịlụ isi mmalite ma ọ bụ faịlụ nkụnye eji isi mee ma ọ bụ ọ bụrụ na faịlụ ihe adịghị adị ma ọlị. Mgbe emechara faịlụ ihe dị mkpa, mee kpebie ma ị ga-ejikọgharị ikpeazụ ma ọ bụ na ọ gaghị. A ghaghị ime nke a ma ọ bụrụ na faịlụ ikpeazụ adịghị, ma ọ bụ ọ bụrụ na faịlụ ihe ọ bụla dị ọhụrụ karịa ya.

Ya mere, ọ bụrụ na anyị agbanwee faịlụ inter.c, mgbe ahụ na-agba ọsọ mee ọ ga-achịkọta faịlụ isi iyi iji melite ihe faịlụ inter.o na wee jikọta ikpeazụ.

N'ihe atụ anyị, anyị ga-edepụta faịlụ ihe niile ugboro abụọ na iwu maka ikpeazụ dị ka egosiri n'okpuru.

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

Iji zere ụdị nsụgharị ndị dị otú ahụ, anyị nwere ike iwebata mgbanwe dị iche iche iji chekwaa ndepụta faịlụ ihe a na-eji n'ime makefile. Site n'iji OBJ na-agbanwe agbanwe, anyị nwere ike idegharị ihe nlele makefilena nke yiri nke egosiri n'okpuru.

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)

Dị ka anyị hụrụ na ihe atụmakefile, anyị nwere ike ịkọwa iwu iji hichaa akwụkwọ ndekọ aha site na iwepu faịlụ ihe na-achọghị mgbe nchịkọta. Ka e were ya na anyị nwere faịlụ ebumnuche akpọrọ dị ọcha. Olee otú                                                                                                                                        eji                           kà        lee á             lee ò     dê ò«ê ókè» bê ihe d icheiche nke ihe abπuzπo ahπo n’elu? Nke a na-abịa echiche nke phony targets.

Ihe e lekwasịrị anya nke ọma bụ nke na-abụghị aha faịlụ n'ezie, kama ọ bụ naanị aha maka usoro nhazi ka a ga-egbu mgbe ọ bụla a rịọrọ arịrịọ doro anya site na makefile. Otu isi ihe mere a ga-eji na-eji ebumnuche nzuzo bụ ka ị zere esemokwu na faịlụ nwere otu aha. Ihe ọzọ kpatara ya bụ iji melite arụmọrụ.

Iji kọwaa ihe a, m ga-ekpughe otu mgbagwoju anya na-atụghị anya ya. Ntụziaka maka dị ọcha agaghị eme ya na ndabara na-agba ọsọ mee. Kama ọ dị mkpa ịkpọku otu ihe ahụ site n'inye iwu mee ka ọ dị ọcha.

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

Ugbu a gbalịa ịmepụta makefiles maka koodu nke gị. Enwere onwe gị ikwu okwu ebe a na obi abụọ gị.