Apa itu Makefile dan bagaimana ia berfungsi dalam Linux?

Apa itu Makefile dan bagaimana ia berfungsi dalam Linux

Si mahu menjalankan atau mengemas kini tugas apabila fail tertentu dikemas kini, utiliti membuat boleh berguna. Utiliti make memerlukan fail, makefile, yang menentukan satu set tugas yang akan dilaksanakan.

Nama ini akan terdengar tidak asing bagi kebanyakan anda kerana anda mungkin pernah menggunakan untuk menyusun program dari kod sumber. Sebilangan besar projek sumber terbuka menggunakan make untuk menyusun binary akhir yang boleh dilaksanakan, yang boleh dipasang menggunakan make install.

Kali ini mari kita fahami bagaimana fail jenis ini berfungsi dalam Linux.

Fail makefile Pada dasarnya ia dibahagikan kepada empat jenis pernyataan asas:

  • comments
  • Pemboleh ubah
  • Peraturan yang jelas.
  • Peraturan tersirat.

Peraturan Eksplisit memberitahu membuat fail mana yang bergantung pada fail lain, serta perintah yang diperlukan untuk menyusun fail tertentu.

Walaupun yang tersirat mirip dengan yang tersurat, tetapi dengan perbedaannya menunjukkan perintah yang harus dilaksanakan, tetapi menggunakan ekstensi file untuk menentukan perintah mana yang harus dilaksanakan.

Dalam contoh ini kita tidak akan menggunakan dua yang terakhir ini, Kami hanya akan memulakan dengan mencetak "Hello World" klasik di terminal.

Untuk ini, kita akan membuat direktori kosong dengan nama yang anda mahukan.

Dalam kes ini mari kita sebut "contoh-buat" dan dalam ini Kami akan membuat makefile dengan kandungan berikut:

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

Sekarang jalankan file dengan mengetik make di dalam direktori, outputnya adalah:

make
echo "Hola Mundo"
Hola Mundo

Seperti yang anda lihat ketika makefile dijalankan, perintah gema "Hello World" ditampilkan, diikuti dengan output dari perintah yang sebenarnya. Kita sering tidak menginginkannya. Untuk menekan output ini semasa anda menjalankan make, cukup tambahkan "@" sebelum bergema:

Contoh praktikalnya ialah:

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

Sekarang kita boleh terus menjalankan makefile lagi. Hasilnya hanya menunjukkan:

make
Hola Mundo

Ini cukup asas. Tetapi seperti yang anda ketahui, makefiles mengandungi banyak perkara, di antaranya menunjukkan urutan yang harus diikuti.

Kami boleh menambahkan beberapa urutan mudah ke fail ini.

Apa yang akan kami lakukan adalah mengedit fail seperti berikut:

#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

Semasa menjalankan semula makefile, ini hanya akan melaksanakan objektif pertama. Ini kerana hanya sasaran pertama di makefile yang menjadi sasaran lalai.

Untuk pelaksanaan dilaksanakan mengikut urutan adalah perlu untuk menunjukkannya di dalam fail dengan "semua". Adalah tanggungjawab "di sana" untuk memanggil sasaran lain.

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

Anda boleh terus menjalankan make lagi dan anda akan melihat di dalam direktori fail yang dipanggil "Fail.txt".

Dengan cara yang sama adalah mungkin untuk dapat melaksanakan target di dalam file makefile, ini biasanya sangat digunakan.

Kami akan mengubah fail kami dan kami akan menambahkan yang berikut pada akhir:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Anda boleh menjalankan semula dan ia akan mencipta semula fail txt. Seperti yang akan anda lihat, ia akan melakukan perkara yang sama seperti waktu sebelumnya. Tetapi sekarang kita akan melaksanakan target yang ada di dalam file makefile.

Kami melakukan ini dengan:

make clean

Dengan ini kita dapat mempelajari sesuatu yang sangat asas tentang membuat fail dan bagaimana ia dapat menjadi sangat berguna jika kita ingin mengotomatisasi beberapa perkara.

Sudah tentu anda boleh membina fail yang lebih besar dan lebih rumit, tetapi ini adalah satu-satunya contoh untuk pemula (saya termasuk saya) yang akan mengetahui bagaimana ini berfungsi.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   arg0s kata

    Artikel yang sangat menarik. Soalan ... apa yang anda panggil "pemboleh ubah" bukan fungsi atau kaedah?

    1.    David naranjo kata

      Sebenarnya, ya kawan saya, terima kasih atas pembetulannya.
      Ceria! 🙂

  2.   Peter kata

    Hebat, saya harap anda terus menggali.

  3.   manuelalcocer kata

    Baik, tidak satu perkara atau yang lain, https://www.gnu.org/software/make/manual/make.html, adalah "sasaran"

  4.   manuelalcocer kata

    peraturan

  5.   sebas kata

    Mudah-mudahan mereka terus menerangkan perkara-perkara seperti ini, "ada di mana-mana dan asas", mengenai menjalankan Linux dari hari ke hari, yang tidak ada yang pernah menjelaskan dengan semangat yang sama seperti bagaimana "kelebihan dan operasi" tersebut diberitakan.