Skip to main content

Pag-unawa sa Unix at Linux Command: gumawa

Week 1 (Abril 2024)

Week 1 (Abril 2024)
Anonim

Ang layunin ng gumawa ng utility ay awtomatikong matukoy kung saan ang mga piraso ng isang malaking programa ay kailangang muling recompile at i-isyu ang mga utos upang muling mag-recompile sa mga ito. Inilalarawan ng manu-manong pagpapatupad ng GNU, na isinulat ni Richard Stallman at Roland McGrath. Ang mga halimbawang ito ay nagpapakita ng mga programang C dahil ang mga ito ay pinaka-karaniwan, ngunit maaari mong gamitin ang gumawa sa anumang programming language na ang tagatala ay maaaring tumakbo gamit ang shell command. Sa katunayan, ang paggawa ay hindi limitado sa mga programa. Maaari mong gamitin ito upang ilarawan ang anumang gawain kung saan ang ilang mga file ay dapat na awtomatikong na-update mula sa iba tuwing ang iba ay magbabago.

Tandaan: Ang pahinang ito ay isang katas ng dokumentasyon ng GNU make . Paminsan-minsan ay na-update lamang dahil ang proyekto ng GNU ay hindi gumagamit ng nroff. Para sa kumpletong, kasalukuyang dokumentasyon, sumangguni sa info file make.info na ginawa mula sa Texinfo source file make.texinfo.

Syntax at paghahanda ng paggawa ng utility

gumawa -f makefile pagpipilian … target …

Upang maghanda upang gamitin ang gumawa, dapat kang magsulat ng isang file na tinatawag na makefile na naglalarawan ng mga ugnayan sa mga file sa iyong programa at ipinapahayag ang mga utos para sa pag-update ng bawat file. Kadalasan ang isang maipapatupad na file ay na-update mula sa mga file ng bagay, na kung saan ay ginawa sa pamamagitan ng pag-compile ng mga source file.

Sa sandaling ang isang naaangkop na makefile ay umiiral, sa bawat oras na baguhin mo ang ilang mga source file na ito simpleng shell command gumawa suffices upang maisagawa ang lahat ng kinakailangang recompilations. Ginagamit ng programang paggawa ang base data ng makefile at ang huling beses na pagbabago ng mga file upang magpasya kung alin sa mga file ang kailangang ma-update. Para sa bawat isa sa mga file na iyon, inuutusan nito ang mga command na naitala sa database.

Gumawa ng utility ang mga command sa makefile upang i-update ang isa o higit pang mga pangalan ng target, kung saan pangalan ay karaniwang isang programa. Kung hindi-f Ang pagpipilian ay naroroon, ang magiging hitsura para sa makefilesGNUmakefile, makefile, atMakefile, sa utos na iyon.

Karaniwan dapat mong tawagan ang iyong makefile alinman sa makefile o Makefile. (Inirerekumendang gamitin ang Makefile sapagkat lumilitaw itong malapit sa simula ng listahan ng direktoryo, malapit sa iba pang mahahalagang file tulad ngREADME.) Ang unang pangalan-check, GNUmakefile, ay hindi inirerekomenda para sa karamihan ng mga makefiles. Dapat mong gamitin ang pangalang ito kung mayroon kang isang makefile na partikular sa GNU gumawa at hindi mauunawaan ng iba pang mga bersyon ng gumawa. Kung ang makefile ay -, ang karaniwang input ay binabasa.

Ang gumawa ina-update ng utility ang isang target kung depende ito sa mga kinakailangang file na na-modify dahil ang target ay huling binago, o kung ang target ay hindi umiiral.

Mga Opsyon

Ang -b at -m ang mga pagpipilian ay hindi pinansin para sa pagiging tugma sa iba pang mga bersyon ng gumawa.

-C dir ay magbabago sa direct dir bago basahin ang makefiles o gumawa ng iba pa. Kung maramihang-C tinukoy ang mga pagpipilian, ang bawat isa ay binibigyang-kahulugan sa naunang:-C/ -C atbp ay katumbas ng-C / etc. Ito ay kadalasang ginagamit sa recursive invocations ng make.

Ang -d Ang opsyon ay mag-print ng impormasyon sa pag-debug bilang karagdagan sa normal na pagproseso. Sinasabi ng impormasyon sa pag-debug kung aling mga file ang isinasaalang-alang para sa remaking, kung saan ang mga oras ng pag-file ay inihahambing at kung ano ang mga resulta, kung aling mga file ang talagang kailangang remade, kung saan ang mga nakikitang mga patakaran ay isinasaalang-alang at na inilalapat-lahat ng bagay na kawili-wili tungkol sa kung paano magpasiya kung ano ang gagawin .

Ang -e Ang pagpipilian ay nagbibigay ng mga variable na nakuha mula sa kapaligiran na pangunahan sa mga variable mula sa makefiles.

Ang -f file Gumagamit ng opsyon file bilang isang makefile.

Ang -i pinapalitan ng pagpipilian ang lahat ng mga error sa mga utos na isinagawa upang gawing muli ang mga file.

Ang -I dir Tinutukoy ng pagpipilian ang isang direktoryo dir upang maghanap para sa mga kasama na makefiles. Kung ilan-I Ang mga pagpipilian ay ginagamit upang tukuyin ang ilang mga direktoryo, ang mga direktoryo ay hinanap sa tinukoy na order. Hindi tulad ng mga argumento sa iba pang mga flag ng gumawa, direktoryo na ibinigay sa-I ang mga flag ay maaaring direktang dumating pagkatapos ng bandila:-Idir ay pinapayagan, pati na rin-I dir . Ang syntax na ito ay pinapayagan para sa pagiging tugma sa C preprocessor's-I bandila.

Ang -j trabaho Tinutukoy ng pagpipilian ang bilang ng mga trabaho (mga command) upang tumakbo nang sabay-sabay. Kung mayroong higit sa isa-j opsyon, ang huling isa ay epektibo. Kung ang-j Ang pagpipilian ay ibinigay nang walang argumento, hindi limitahan ang bilang ng mga trabaho na maaaring tumakbo nang sabay-sabay.

Ang -k ang pagpipiliang patuloy hangga't maaari pagkatapos ng isang error; samantalang ang target na nabigo, at ang mga umaasa dito, ay hindi maaaring remade, ang iba pang mga dependency ng mga target na ito ay maaaring iproseso ang lahat ng pareho.

Ang -l at -l load ayusin ang mga opsyon na hindi dapat magsimula ang mga bagong trabaho (mga command) kung mayroong iba pang mga trabaho na tumatakbo, at ang average load ay hindi bababa saload (isang lumulutang-point na numero). Sa walang argumento, inaalis nito ang isang nakaraang limitasyon ng pag-load.

Ang -n Ang opsyon ay nag-print ng mga utos na naisakatuparan, ngunit hindi isinasagawa ang mga ito.

Ang -o file ang opsyon ay hindi muling gumana file kahit na ito ay mas luma kaysa sa mga dependency nito, at hindi gumawang muli anumang bagay dahil sa mga pagbabago file . Mahalaga ang file ay itinuturing na napaka-lumang at ang mga panuntunan nito ay hindi pinansin.

Ang -p Ang opsyon ay nag-print ng database (mga panuntunan at variable na halaga) na resulta mula sa pagbabasa ng makefiles. Pagkatapos ay isinasagawa ito gaya ng dati o kung tinukoy.Ini-print din nito ang impormasyon ng bersyon na ibinigay ng-v lumipat (tingnan sa ibaba). Upang i-print ang database nang hindi sinusubukan na muling gawing muli ang anumang mga file, gamitingumawa -p -f / dev / null .

Ang -q Ang opsyon ay nagtatakda ng mode na tanong. Huwag magpatakbo ng anumang mga utos o mag-print ng anumang bagay, bumalik lamang sa isang exit status na zero kung ang tinukoy na mga target ay napapanahon, nonzero kung hindi man.

Ang -r pinipigilan ng pagpipilian ang paggamit ng mga built-in na mga tuntunin ng pahayag. Nililimitahan din ang default na listahan ng mga suffix para sa mga panuntunan sa suffix.

Ang -s Ang pagpipili ay nakapagpapahinga sa operasyon. Hindi ito naka-print ang mga utos habang ginagawa ang mga ito.

Ang -S Ang opsyon ay maaaring mag-alis sa epekto ng-k pagpipilian. Ito ay hindi kinakailangan maliban sa isang recursive make kung saan-k maaaring minana mula sa top-level make sa pamamagitan ng MAKEFLAGS o kung itinakda mo-k sa MAKEFLAGS sa iyong kapaligiran.

Ang -t Ang opsyon ay hinahawakan ang mga file (pinaparating ang mga ito hanggang sa petsa nang hindi talaga binabago ang mga ito) sa halip na patakbuhin ang kanilang mga utos. Ginagamit ito upang magpanggap na ang mga utos ay tapos na, upang iwaksi ang mga hinaharap na invocations ng gumawa.

Ang -v Ang opsyon ay naka-print sa bersyon ng programa ng gumawa kasama ang copyright, isang listahan ng mga may-akda, at isang paunawa na walang warranty.

Ang -w Ang pagpipiliang naka-print ng isang mensahe na naglalaman ng nagtatrabaho direktoryo bago at pagkatapos ng iba pang processing. Ito ay maaaring kapaki-pakinabang para sa pagsubaybay ng mga error mula sa kumplikadong mga nest ng recursive make utos.

Ang -W file Ang pagpipilian ay nagpapanggap na ang target file ay binago na. Kapag ginamit sa-n bandila, ipinapakita nito sa iyo kung ano ang mangyayari kung iyong baguhin ang file na iyon. Wala-n, ito ay halos katulad ng pagpapatakbo ng isanghawakan Command sa ibinigay na file bago tumakbo gumawa, maliban na ang oras ng pagbabago ay binago lamang sa imahinasyon ng gumawa.