Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയുന്ന makepp_build_algorithm എന്ന കമാൻഡ് ആണിത്.
പട്ടിക:
NAME
makepp_build_algorithm -- makepp എങ്ങനെയാണ് ഒരു മേക്ക് ഫയൽ എക്സിക്യൂട്ട് ചെയ്യുന്നത്
വിവരണം
മേക്കപ്പിന്റെ ഇന്റേണലുകൾ അടിസ്ഥാനപരമായ രീതിയിൽ യുണിക്സ് നിർമ്മിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്തമാണ്. ഈ പേജ്
വ്യത്യസ്ത തത്വശാസ്ത്രത്തെ വിശദമായി വിവരിക്കുന്നു.
പിന്നോട്ട് പോകുക വേഴ്സസ് മുന്നോട്ട് അനുമാനം
സ്റ്റാൻഡേർഡ് യുണിക്സ് മേക്കിൽ നിന്ന് വിപരീത ദിശയിലാണ് Makepp പ്രവർത്തിക്കുന്നത്. പരമ്പരാഗത യുണിക്സ് നിർമ്മാണം
കെട്ടിപ്പടുക്കാൻ ഒരു ടാർഗെറ്റ് നൽകപ്പെടുന്നു, തുടർന്ന് അത് എന്നതിലെ പ്രതീകങ്ങളുമായി പൊരുത്തപ്പെടുന്ന ഒരു നിയമം കണ്ടെത്തുന്നു
ടാർഗെറ്റ് ഫയൽ നാമം. ടാർഗെറ്റ് അതിന്റെ റൂളിന്റെ ഏതെങ്കിലും ആശ്രിതത്വത്തേക്കാൾ പഴയതാണെങ്കിൽ, അത്
പുനർനിർമിച്ചിരിക്കുന്നു.
ഉദാഹരണത്തിന്, ഈ പാറ്റേൺ നിയമം പരിഗണിക്കുക:
%.o: %.cxx
$(CXX) $(CXXFLAGS) -c $(ഇൻപുട്ട്) -o $(ഔട്ട്പുട്ട്)
"xyz.o" എന്ന പേരിൽ ഒരു ഫയൽ നിർമ്മിക്കണമെന്ന് Make മനസ്സിലാക്കുമ്പോൾ, അത് അതിന്റെ ലിസ്റ്റിലൂടെ തിരയുന്നു
"xyz.o" "%.o" എന്ന പാറ്റേണുമായി പൊരുത്തപ്പെടുന്നത് കാണുന്നതുവരെ പാറ്റേൺ നിയമങ്ങൾ, തുടർന്ന് അത് ബാധകമാണ്
ഈ നിയമം.
മേക്കപ്പ് വിപരീത ദിശയിൽ പ്രവർത്തിക്കുന്നു. ഇത് ആദ്യം അതിന് സാധ്യമായ എല്ലാ ഫയലുകളും കണക്കാക്കുന്നു
ഡിപൻഡൻസി ഫയൽനാമങ്ങളിലെ പ്രതീകങ്ങളുമായി പൊരുത്തപ്പെടുന്ന നിയമങ്ങൾ പ്രയോഗിച്ച് നിർമ്മിക്കുക. പിന്നെ എപ്പോള്
അതിന് ഒരു ഫയൽ നിർമ്മിക്കേണ്ടതുണ്ട്, അത് അത് അറിയാവുന്ന ഫയലുകളിൽ ഒന്നാണോ എന്ന് നോക്കുന്നു
എങ്ങനെ നിർമ്മിക്കാം. അറിയപ്പെടുന്ന ഫയലുകളുടെ ലിസ്റ്റ് സംഭരിച്ചിരിക്കുന്നത് കേവല ഫയൽനാമത്തെ അടിസ്ഥാനമാക്കിയാണ്.
മുകളിലെ പാറ്റേൺ നിയമം makepp നേരിടുമ്പോൾ, അത് ഡയറക്ടറിയിലെ എല്ലാ ഫയലുകൾക്കുമായി തിരയുന്നു
"%.cxx" (അതായത്, "*.cxx") പാറ്റേണുമായി പൊരുത്തപ്പെടുന്നു. ഈ ഓരോ ഫയലുകൾക്കും, അത് പിന്നീട് ഓർക്കുന്നു
അതിന് അനുയോജ്യമായ ".o" ഫയൽ നിർമ്മിക്കാൻ കഴിയും. പിന്നീട് മേക്കപ്പ് അത് കണ്ടെത്തുകയാണെങ്കിൽ
നിലവിൽ ഇല്ലാത്ത മറ്റൊരു ".cxx" ഫയൽ നിർമ്മിക്കാൻ കഴിയും, ഈ നിയമവും ബാധകമാകും
ഒപ്പം അനുബന്ധ ".o" ഫയൽ അടയാളപ്പെടുത്തും.
ഇത് ഒരു പരിധിവരെ കാര്യക്ഷമമല്ലാത്തതായി തോന്നിയേക്കാം, പക്ഷേ മിക്ക കേസുകളിലും ഇത് മന്ദഗതിയിലല്ല.
നിർമ്മിക്കാൻ കഴിയുന്ന എല്ലാ ഫയലുകളും യഥാർത്ഥത്തിൽ നിർമ്മിച്ചതാണ് എന്നത് പലപ്പോഴും സത്യമാണ്.
നിർമ്മിക്കാൻ കഴിയുന്ന ഫയലുകളുടെ പൂർണ്ണമായ ലിസ്റ്റ് അറിയുന്നതിന് നിരവധി ഗുണങ്ങളുണ്ട്:
വൈൽഡ്കാർഡുകൾക്ക് ഇതുവരെ നിലവിലില്ലാത്തതും നിർമ്മിക്കാൻ കഴിയുന്നതുമായ ഫയലുകളുമായി പൊരുത്തപ്പെടാൻ കഴിയും.
· ഓട്ടോമാറ്റിക് ഡിപൻഡൻസി സ്കാനർ കണ്ടെത്തിയ ഹെഡർ ഫയലുകൾ ഇല്ല
നിലനിൽക്കാൻ; അവർ എവിടെയാണെന്ന് makepp-ന് അറിയാം. (ഈ പ്രശ്നത്തിനുള്ള മറ്റ് മിക്ക പരിഹാരങ്ങളും
ഇതുവരെ നിലവിലില്ലാത്ത ഏതെങ്കിലും തലക്കെട്ടുകൾ നിലവിലെ ഡയറക്ടറിയിൽ ഉണ്ടെന്ന് കരുതുക.)
· റിപ്പോസിറ്ററികൾ നടപ്പിലാക്കാൻ വളരെ ലളിതമാണ്, കാരണം മേക്കപ്പിന് അത് ഫയലുകൾ എന്താണെന്ന് മുൻകൂട്ടി അറിയാമായിരുന്നു
ഉണ്ടാക്കാം. (വിശദാംശങ്ങൾക്ക് makepp_repositories കാണുക.)
· ഏതൊക്കെ ഫയലുകൾ നിർമ്മിക്കാമെന്ന് എളുപ്പത്തിൽ നിർണ്ണയിക്കാൻ കഴിയും (കാണുക
"$(only_targets )" ഫംഗ്ഷൻ.
· മേക്കപ്പിന്റെ "$(infer_objects)" ഫംഗ്ഷൻ ഒബ്ജക്റ്റുകൾ എന്താണെന്ന് അറിയുന്നതിലൂടെ വളരെ ലളിതമാക്കിയിരിക്കുന്നു.
ലഭ്യമല്ല.
ഫയലുകൾ വേഴ്സസ് വാചകം പാറ്റേണുകൾ
Makepp അസോസിയേറ്റ്സ് ഒരു ടാർഗെറ്റ് ഫയൽ ഉപയോഗിച്ചാണ് കമാൻഡുകൾ നിർമ്മിക്കുന്നത്, ഒരു ടെക്സ്ച്വൽ പാറ്റേണിലേക്കല്ല
ഫയലിന്റെ പേര്. അതിനാൽ ഒരേ ഫയലിന് വ്യത്യസ്ത പേരുകളാൽ ഇത് ആശയക്കുഴപ്പത്തിലാകില്ല. അങ്ങനെ, വേണ്ടി
ഉദാഹരണത്തിന്, "./xyz" ഉം "xyz" ഉം ഒരേ ഫയലാണെന്ന് makepp അറിയും, അതേസമയം മറ്റ് നിർമ്മാണം
യൂട്ടിലിറ്റികൾ പാടില്ല.
ഇത് വളരെ പ്രധാനമാണ്, കാരണം (സ്റ്റാൻഡേർഡ് മേക്കിൽ നിന്ന് വ്യത്യസ്തമായി) makepp മേക്ക് ഫയലുകൾ ലോഡ് ചെയ്യുന്നു
വ്യത്യസ്ത ഡയറക്ടറികളിൽ നിന്ന്. മേക്ക്ഫൈലുകൾ താരതമ്യേന സ്വതന്ത്രമാകുന്നതിന്, കൂടെ
ഒരു ഉയർന്ന തലത്തിലുള്ള മേക്ക് ഫയലിന് പ്രത്യേക സ്ഥാനമൊന്നും നൽകിയിട്ടില്ല, ഓരോ മേക്ക് ഫയലും എല്ലാ ഫയലുകളെയും സൂചിപ്പിക്കുന്നു
സ്വന്തം ഡയറക്ടറിയുമായി ബന്ധപ്പെട്ട്. ഉപഡയറക്ടറിയിൽ നിന്ന് നിങ്ങൾ ഒരു മേക്ക്ഫയൽ ലോഡ് ചെയ്യുകയാണെങ്കിൽ
"other_stuff", കൂടാതെ ആ makefile സൂചിപ്പിക്കുന്നത് "../xyz" ആണ്, അത് വീണ്ടും മനസ്സിലാക്കും.
മുകളിൽ സൂചിപ്പിച്ച അതേ ഫയൽ. (സോഫ്റ്റ്-ലിങ്ക്ഡ് ഡയറക്ടറിയും ഇത് ആശയക്കുഴപ്പത്തിലാക്കില്ല
പേരുകൾ.)
സംഭരിച്ചു പണിയുക വിവരം
ഓരോ ഫയലിനെയും കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾ Makepp സംഭരിക്കുന്നു, അത് വെറും തീയതിക്കപ്പുറം നിർമ്മിക്കുന്നു
സ്റ്റാമ്പ് (ഇതാണ് സ്റ്റാൻഡേർഡ് ശ്രദ്ധിക്കുന്നത്). ഈ വിവരങ്ങളിൽ ഉൾപ്പെടുന്നു:
അവസാന ബിൽഡിൽ ഈ ഫയലിന്റെ ഒപ്പ്, അതിനാൽ ഫയലിൽ തന്നെ ഉണ്ടോ എന്ന് നമുക്കറിയാം
മാറി.
· അനുമാനിച്ച ഫയലുകളും മറ്റ് ഫയലുകളും ഉൾപ്പെടെ ഓരോ ഡിപൻഡൻസി ഫയലിന്റെയും പേരുകൾ
ഓട്ടോമാറ്റിയ്ക്കായി. ഈ ലിസ്റ്റ് മാറുകയാണെങ്കിൽ, അത് പുനർനിർമ്മിക്കണമെന്ന് makepp അനുമാനിക്കുന്നു.
· ഓരോ ആശ്രിതത്വത്തിന്റെയും ഒപ്പ്. ഈ രീതിയിൽ, എപ്പോൾ മാത്രമല്ല പുനർനിർമ്മിക്കാൻ മേക്കപ്പിന് അറിയാം
ആശ്രിതത്വങ്ങൾ ലക്ഷ്യത്തേക്കാൾ പുതിയതാണ്, എന്നാൽ അവ മാറുമ്പോൾ. ഇതും ഉണ്ടാക്കുന്നു
ക്രിപ്റ്റോഗ്രാഫിക് ചെക്ക്സം പോലെയുള്ള മറ്റ് തരത്തിലുള്ള ഒപ്പുകൾ ഉപയോഗിക്കാൻ സാധിക്കും
ഫയൽ തീയതിയേക്കാൾ.
· മുഴുവൻ ബിൽഡ് കമാൻഡും (അതിന്റെ cwd) നിങ്ങൾ ബിൽഡ് കമാൻഡ് മാറ്റുകയാണെങ്കിൽ ഈ രീതിയിൽ
(ഉദാ, കംപൈലർ ഓപ്ഷനുകൾ മാറ്റുക), ഫയലുകൾ പുനർനിർമ്മിക്കാൻ makepp-ന് അറിയാം
സ്വയം മാറിയിട്ടില്ല.
· വാസ്തുവിദ്യ. നിങ്ങൾ ലിനക്സിൽ നിങ്ങളുടെ പ്രോഗ്രാം കംപൈൽ ചെയ്തിട്ടുണ്ടെങ്കിൽ അതിലേക്ക് മാറുക
സോളാരിസ്, എല്ലാം വീണ്ടും കംപൈൽ ചെയ്യാൻ മേക്കപ്പിന് സ്വയമേവ അറിയാം.
മേക്കപ്പ് ".makepp" എന്ന് വിളിക്കുന്ന എല്ലാ ഡയറക്ടറിയിലും ഒരു ഉപഡയറക്ടറി നിർമ്മിക്കുന്നു. ദി
ഒരു ഫയലിനായി വിവരങ്ങൾ നിർമ്മിക്കുക ഫയലിന്റെ പേര് ഒരു ഡയറക്ടറിയിൽ സംഭരിച്ചിരിക്കുന്നു .makepp/filename. എങ്കിൽ
നിങ്ങൾ ഈ ഉപഡയറക്ടറി ഇല്ലാതാക്കുകയോ ഫയലുകൾ മാറ്റുകയോ ചെയ്താൽ, ബാധിക്കപ്പെട്ട എല്ലാ ഫയലുകളും makepp പുനർനിർമ്മിക്കും.
പരോക്ഷമായ ലോഡിങ്
makepp ഒരു ഡയറക്ടറിയിൽ ഒരു ടാർഗെറ്റ് നിർമ്മിക്കാൻ ശ്രമിക്കുകയാണെങ്കിലും അതിനായി ഇതുവരെ ഒരു നിയമം ഇല്ലെങ്കിൽ,
അല്ലെങ്കിൽ ഒരു ഡയറക്ടറിയിൽ വൈൽഡ്കാർഡുമായി പൊരുത്തപ്പെടുന്ന ഫയലുകൾക്കായി തിരയുകയാണെങ്കിൽ, അത് അതിൽ നോക്കും
ഒരു മേക്ക് ഫയൽ ഉണ്ടോ എന്നറിയാൻ ഡയറക്ടറി. അങ്ങനെയാണെങ്കിൽ, മേക്ക് ഫയൽ ലോഡ് ചെയ്യും
ഓട്ടോമാറ്റിയ്ക്കായി.
ഇതിനർത്ഥം നിങ്ങൾ സാധാരണയായി makepp-നോട് എവിടെയാണ് കണ്ടെത്തേണ്ടതെന്ന് വ്യക്തമായി പറയേണ്ടതില്ല എന്നാണ്
makefiles--നിങ്ങൾ ചെയ്യേണ്ടത് മറ്റൊരു ഡയറക്ടറിയിൽ ഒരു ഫയൽ റഫറൻസ് ചെയ്യുകയാണ്, makepp ചെയ്യും
അത് എങ്ങനെ നിർമ്മിക്കാമെന്ന് സ്വയമേവ കണ്ടെത്തുക.
ഡയറക്ടറി നിങ്ങൾക്ക് എഴുതാൻ കഴിയുമെങ്കിൽ മാത്രമേ അവ്യക്തമായ ലോഡിംഗ് സംഭവിക്കൂ. അങ്ങനെ വേണമെങ്കിൽ
ഒരിക്കലും മാറാത്ത ഒരു കൂട്ടം കാര്യങ്ങൾ നിർമ്മിക്കാൻ ശ്രമിക്കുന്നതിൽ നിന്നും makepp നെ തടയുക, ലളിതമായി ഉണ്ടാക്കുക
ഡയറക്ടറി വായിക്കാൻ മാത്രം.
നിങ്ങൾ ഒരു മരത്തിനടിയിൽ ആണെങ്കിൽ അവ്യക്തമായ ലോഡിംഗ് സംഭവിക്കില്ല RootMakeppfile(.mk) ഒപ്പം
മറ്റേ മേക്ക് ഫയൽ ആ മരത്തിന് പുറത്താണ്. നിങ്ങൾക്ക് ഇത് ഒരിക്കൽ വേണമെങ്കിൽ, നിങ്ങൾക്ക് നൽകാം
"--do-build=/" എന്ന ഓപ്ഷൻ, ട്രീക്ക് പുറത്തുള്ളതെല്ലാം നിർമ്മിക്കാൻ കഴിയും. നിങ്ങൾ എങ്കിൽ
എല്ലായ്പ്പോഴും ഇത് ആഗ്രഹിക്കുന്നു, നിങ്ങൾക്ക് ട്രീയിൽ എവിടെയെങ്കിലും ഒരു "load_makefile" സ്റ്റേറ്റ്മെന്റ് നൽകാം
അത് മരവുമായി വ്യക്തമായി ബന്ധിപ്പിക്കുക.
അവ്യക്തമായ ലോഡിംഗ് നിങ്ങളുടെ വഴിയിൽ വന്നാൽ (അതായത്, makepp വളരെയധികം മേക്ക് ഫയലുകൾ ലോഡുചെയ്യുകയും അത് പാഴാക്കുകയും ചെയ്യുന്നു
സമയം, അല്ലെങ്കിൽ അതിൽ വിവരിച്ചിരിക്കുന്ന എല്ലാ കാര്യങ്ങളും പുനർനിർമ്മിക്കാൻ ശ്രമിക്കണമെന്ന് നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ല
makefiles), "--noimplicit_load" കമാൻഡ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് എല്ലാ ഡയറക്ടറികൾക്കും ഇത് ഓഫാക്കാനാകും
ലൈൻ ഓപ്ഷൻ, അല്ലെങ്കിൽ "no_implicit_load" ഉപയോഗിച്ച് തിരഞ്ഞെടുത്ത ഡയറക്ടറികൾക്കായി നിങ്ങൾക്കത് ഓഫാക്കാം.
നിങ്ങളുടെ മേക്ക് ഫയലിലെ പ്രസ്താവന.
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് ഓൺലൈനിൽ makepp_build_algorithm ഉപയോഗിക്കുക