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
باستخدام هذا ، يمكننا أن نتعلم شيئًا أساسيًا حول إنشاء الملفات وكيف يمكن أن تكون مفيدة جدًا إذا أردنا أتمتة بعض الأشياء.
من الواضح أنه يمكنك إنشاء ملف أكبر وأكثر تعقيدًا ، ولكن هذا مجرد مثال للمبتدئين (وأنا أضمّن نفسي) الذين يتعرفون على كيفية عمل ذلك.
مقال مشوق جدا. سؤال .. ما تسمونه "المتغيرات" لن يكون دوال أو طرق؟
في الحقيقة نعم يا صديقي شكرا على التصحيح.
تحية! 🙂
ممتاز ، أتمنى أن تستمر في الحفر.
حسنًا ، لا شيء ولا ذاك ، https://www.gnu.org/software/make/manual/make.html، هي "أهداف"
قواعد
نأمل أن يستمروا في شرح أشياء مثل هذه ، "في كل مكان وابتدائية" ، من التشغيل اليومي لنظام Linux ، والتي لم يشرحها أحد أبدًا بنفس الشغف مثل كيفية الوعظ بهذه "المزايا والتشغيل".