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.
- 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ụ.
- 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.
- A nkọwa mgbanwe bụ ahịrị na-akọwapụta uru eriri maka mgbanwe ga-anọchi ma emechaa.
- A directive bụ ntụziaka maka ime ihe pụrụ iche mgbe ị na-agụ makefile.
- 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ị.