ما هو Makefile وكيف يعمل داخل Linux؟

ما هو ملف Makefile وكيف يعمل داخل Linux

Si تريد تشغيل مهمة أو تحديثها عند تحديث ملفات معينة، يمكن أن تكون الأداة المساعدة في متناول اليد. تتطلب الأداة المساعدة make ملفًا ، makefile ، والذي يحدد مجموعة من المهام ليتم تنفيذها.

سيبدو هذا الاسم مألوفًا للكثيرين منكم لأنك ربما استخدمته لتجميع برنامج من شفرة المصدر. تستخدم معظم المشاريع مفتوحة المصدر "make" لتجميع ملف ثنائي نهائي قابل للتنفيذ ، والذي يمكن تثبيته باستخدام التثبيت.

هذه المرة سوف نفهم كيف يعمل هذا النوع من الملفات داخل Linux.

ملف makefile يتم تمييزها أساسًا إلى أربعة أنواع أساسية من البيانات:

  • تعليقات
  • المتغيرات.
  • قواعد صريحة.
  • القواعد الضمنية.

تخبر القواعد الصريحة عن الملفات التي تعتمد على الملفات الأخرى ، بالإضافة إلى الأوامر المطلوبة لتجميع ملف معين.

في حين أن تلك الضمنية تشبه الأوامر الصريحة ، ولكن مع الاختلاف فإنها تشير إلى الأوامر التي يجب تنفيذها ، ولكنها بدلاً من ذلك تستخدم امتدادات الملفات لتحديد الأوامر التي يجب تنفيذها.

في هذا المثال ، لن نستخدم هذين الأخيرين ، سنبدأ فقط بطباعة "Hello World" الكلاسيكي في المحطة.

لهذا سنقوم بإنشاء دليل فارغ بالاسم الذي تريده.

في هذه الحالة دعنا نسميها "صنع المثال" وداخل هذا سنقوم بإنشاء ملف makefile بالمحتوى التالي:

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

الآن قم بتشغيل الملف عن طريق كتابة make داخل الدليل ، سيكون الإخراج:

make
echo "Hola Mundo"
Hola Mundo

كما ترى عند تشغيل makefile ، يتم عرض الأمر echo "Hello World" ، متبوعًا بإخراج الأمر الفعلي. نحن لا نريد ذلك غالبًا. لإيقاف هذا الإخراج عند تشغيل make ، ما عليك سوى إضافة "@" قبل echo:

المثال العملي لذلك هو:

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

الآن يمكننا المضي قدما في تشغيل makefile مرة أخرى. يجب أن يظهر الناتج فقط:

make
Hola Mundo

هذا أساسي جدًا. ولكن كما تعلم ، تحتوي ملفات makefiles على الكثير من الأشياء ، والتي تشير إلى التسلسلات التي يجب اتباعها.

يمكننا إضافة بعض التسلسلات البسيطة إلى هذا الملف.

كما سنفعله هو تحرير الملف على النحو التالي:

#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

عند إعادة تشغيل makefile ، سيؤدي هذا فقط إلى تنفيذ الهدف الأول. هذا لأن الهدف الأول فقط في ملف makefile هو الهدف الافتراضي.

للتشغيل بالتسلسل من الضروري الإشارة إليه داخل الملف بكلمة "all". إنها مسؤولية "هناك" لاستدعاء أهداف أخرى.

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

يمكنك المتابعة لتنفيذ إجراء مرة أخرى وسترى أنه داخل الدليل يوجد ملف يسمى "File.txt".

وبالمثل من الممكن أن تكون قادرًا على تنفيذ هدف داخل ملف makefile، يستخدم هذا بشكل عام.

سنقوم بتعديل ملفنا وسنضيف ما يلي في النهاية:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

يمكنك تشغيل make مرة أخرى وسيقوم بإعادة إنشاء ملف txt. كما سترى ، ستفعل نفس الشيء مثل المرة السابقة. لكننا الآن بصدد تنفيذ الهدف الموجود داخل ملف makefile.

نقوم بهذا مع:

make clean

باستخدام هذا ، يمكننا أن نتعلم شيئًا أساسيًا حول إنشاء الملفات وكيف يمكن أن تكون مفيدة جدًا إذا أردنا أتمتة بعض الأشياء.

من الواضح أنه يمكنك إنشاء ملف أكبر وأكثر تعقيدًا ، ولكن هذا مجرد مثال للمبتدئين (وأنا أضمّن نفسي) الذين يتعرفون على كيفية عمل ذلك.


6 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   arg0s قال

    مقال مشوق جدا. سؤال .. ما تسمونه "المتغيرات" لن يكون دوال أو طرق؟

    1.    ديفيد نارانجو قال

      في الحقيقة نعم يا صديقي شكرا على التصحيح.
      تحية! 🙂

  2.   بيدرو قال

    ممتاز ، أتمنى أن تستمر في الحفر.

  3.   مانويل قال

    حسنًا ، لا شيء ولا ذاك ، https://www.gnu.org/software/make/manual/make.html، هي "أهداف"

  4.   مانويل قال

    قواعد

  5.   Sebas قال

    نأمل أن يستمروا في شرح أشياء مثل هذه ، "في كل مكان وابتدائية" ، من التشغيل اليومي لنظام Linux ، والتي لم يشرحها أحد أبدًا بنفس الشغف مثل كيفية الوعظ بهذه "المزايا والتشغيل".