Ano ang isang Makefile at paano ito gumagana sa loob ng Linux?

Ano ang isang Makefile at paano ito gumagana sa loob ng Linux

Si nais na patakbuhin o i-update ang isang gawain kapag ang ilang mga file ay nai-update, ang make utility ay maaaring maging madaling gamiting. Ang make utility ay nangangailangan ng isang file, makefile, na tumutukoy sa isang hanay ng mga gawain na naisasagawa.

Pamilyar sa pangalan ng tunog ang pangalang ito sa iyo dahil maaaring ginamit mo ang gumawa upang mag-ipon ng isang programa mula sa source code. Karamihan sa mga bukas na proyekto ng pinagmulan ay gumagamit ng gumawa upang sumulat ng isang pangwakas na maipapatupad na binary, na maaaring mai-install gamit ang make install.

oras na ito mauunawaan namin kung paano gumagana ang ganitong uri ng file sa loob ng Linux.

Isang file na makefile Karaniwan itong nakikilala sa apat na pangunahing uri ng mga pahayag:

  • Komento
  • Mga variable
  • Mga malinaw na patakaran.
  • Mga implicit na panuntunan.

Sinasabi ng Maliliit na Panuntunan na gawin kung aling mga file ang nakasalalay sa iba pang mga file, pati na rin ang mga utos na kinakailangan upang makumpleto ang isang partikular na file.

Habang ang mga nagpapahiwatig ay pareho sa mga tahasang, ngunit sa pagkakaiba ay ipinapahiwatig nila ang mga utos na naisakatuparan, ngunit ginagamit ang mga extension ng file upang matukoy kung aling mga utos ang naisakatuparan.

Sa halimbawang ito hindi namin gagamitin ang huling dalawang ito, Magsisimula lamang kami sa pamamagitan ng pagpi-print ng klasikong "Hello World" sa terminal.

Para sa mga ito ay lilikha kami ng isang walang laman na direktoryo na may gusto mong pangalan.

Sa kasong ito tawagan natin itong "halimbawa-gumawa" at sa loob nito Lilikha kami ng isang makefile na may mga sumusunod na nilalaman:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"

Ngayon patakbuhin ang file sa pamamagitan ng pagta-type na gumawa sa loob ng direktoryo, ang output ay magiging:

make
echo "Hola Mundo"
Hola Mundo

Tulad ng nakikita mo kapag ang makefile ay naisakatuparan, ang command echo na "Hello World" ay ipinakita, sinundan ng output ng aktwal na utos. Madalas ay hindi natin ginusto iyon. Upang pigilan ang output na ito kapag nagpatakbo ka ng gumawa, magdagdag lamang ng isang "@" bago ang echo:

Ang praktikal na halimbawa nito ay:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"

Ngayon maaari naming magpatuloy upang patakbuhin muli ang makefile. Ang output na ito ay dapat ipakita:

make
Hola Mundo

Ito ay medyo basic. Ngunit tulad ng alam mo, ang mga makefile ay naglalaman ng maraming mga bagay, kung saan isinasaad nito ang mga pagkakasunud-sunod na susundan.

Maaari kaming magdagdag ng ilang mga simpleng pagkakasunud-sunod sa file na ito.

Ano ang gagawin namin ay i-edit ang file tulad ng sumusunod:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Kapag tumatakbo muli ang makefile, isasagawa lamang nito ang unang layunin. Iyon ay dahil ang unang target lamang sa makefile ang default na target.

Upang tumakbo sa pagkakasunud-sunod kinakailangan upang ipahiwatig ito sa loob ng file na may "lahat". Responsibilidad ng "doon" na tumawag sa iba pang mga target.

all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Maaari kang magpatuloy upang maipatupad muli at makikita mo na sa loob ng direktoryo ang isang file na tinawag "File.txt".

Sa parehong paraan posible na maipatupad ang isang target sa loob ng file ng makefile, sa pangkalahatan ito ay napaka ginagamit.

Susubukan naming baguhin ang aming file at idaragdag namin ang sumusunod sa dulo:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Maaari mong patakbuhin muli ang gumawa at muling likhain nito ang txt file. Tulad ng makikita mo, gagawin nito ang parehong bagay tulad ng nakaraang oras. Ngunit ngayon ay isasagawa namin ang target na nasa loob ng file ng makefile.

Ginagawa namin ito sa:

make clean

Sa pamamagitan nito maaari naming malaman ang isang bagay na lubos na pangunahing tungkol sa paggawa ng mga file at kung paano sila maaaring maging lubos na kapaki-pakinabang kung nais naming i-automate ang ilang mga bagay.

Malinaw na maaari kang bumuo ng isang mas malaki at mas kumplikadong file, ngunit ito ay isang halimbawa lamang para sa mga newbie (isinasama ko ang aking sarili) na kinikilala kung paano ito gumagana.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   arg0s dijo

    Napakainteresyong artikulo. Ang isang katanungan ... ang tinatawag mong "variable" ay hindi mga pagpapaandar o pamamaraan?

    1.    David naranjo dijo

      Sa katunayan, oo aking kaibigan, salamat sa pagwawasto.
      Cheers! 🙂

  2.   Peter dijo

    Mahusay, sana ay magpatuloy ka sa paghuhukay.

  3.   manuelalcocer dijo

    Sa gayon, hindi sa isang bagay o sa iba pa, https://www.gnu.org/software/make/manual/make.html, ay "target"

  4.   manuelalcocer dijo

    panuntunan

  5.   sebas dijo

    Inaasahan nilang patuloy na ipaliwanag ang mga bagay na tulad nito, "nasa lahat ng pook at elementarya", ng pang-araw-araw na pagpapatakbo ng Linux, na hindi kailanman ipinaliwanag ng sinuman na may parehong pagkahilig kung paano ipinangaral ang mga "kalamangan at pagpapatakbo" na iyon.