"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم ملف Makefile (مثال للغة C).

فهم ملف Makefile (مثال للغة C).

تم النشر بتاريخ 2024-07-31
تصفح:597

Comprendre le Makefile (Exemple avec langage C).

ملف Makefile هو ملف تستخدمه أداة الإنشاء لأتمتة تجميع البرامج. فيما يلي القواعد القياسية وأفضل الممارسات لكتابة ملف Makefile فعال:

الهيكل الأساسي لملف Makefile

  1. الهدف: ما تريد إنشاءه (على سبيل المثال، ملف قابل للتنفيذ).
  2. المتطلبات الأساسية: الملفات اللازمة لبناء الهدف (مثل الملفات المصدر).
  3. القاعدة: الأمر المطلوب تنفيذه لإنشاء الهدف.

مثال بسيط

target: prerequisites
    command

القواعد القياسية

  1. القاعدة الافتراضية: الهدف الأول في Makefile هو الهدف الذي سيتم إنشاؤه افتراضيًا.

  2. تجميع الملفات المصدرية:

    • استخدام المتغيرات للمترجمين والخيارات.
    • مثال :
   CC = gcc
   CFLAGS = -Wall -g
   SOURCES = main.c utils.c
   OBJECTS = $(SOURCES:.c=.o)
   TARGET = mon_programme

   $(TARGET): $(OBJECTS)
       $(CC) -o $@ $^

   %.o: %.c
       $(CC) $(CFLAGS) -c $



  1. Phonies: يستخدم .PHONY للأهداف التي ليست ملفات.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
  1. المتغيرات: يستخدم المتغيرات لتبسيط إدارة المسارات والخيارات.
   CC = gcc
   CFLAGS = -Wall
  1. إدارة التبعية: تستخدم قواعد وأنماط ضمنية لتقليل التكرار.

  2. التبعيات التلقائية : يمكنك إنشاء التبعيات تلقائيًا لملفات .o.

   -include $(OBJECTS:.o=.d)

مثال كامل

إليك مثال Makefile الكامل:

# Variables
CC = gcc
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
TARGET = mon_programme

# Règle par défaut
all: $(TARGET)

# Lien de l'exécutable
# $@ -> $(TARGET)
# $^ -> $(OBJECTS)
$(TARGET): $(OBJECTS)
    $(CC) -o $@ $^

# Compilation des fichiers .c en .o
# $ Premier element des pr
%.o: %.c
    $(CC) $(CFLAGS) -c $



الممارسات الجيدة

  1. مسافة بادئة بعلامات التبويب: يجب وضع مسافة بادئة للأوامر في القواعد بعلامات جدولة، وليس مسافات.

  2. رمز التعليق : يستخدم التعليقات لشرح أقسام ملف Makefile.

  3. ملفات المجموعة: إذا كان مشروعك يحتوي على ملفات متعددة، فقم بتنظيمها في أدلة فرعية واستخدم المتغيرات لإدارة المسارات.

  4. استخدام القواعد الضمنية: استفد من قواعد الإنشاء المضمنة لتجنب إعادة كتابة القواعد المشتركة.

لماذا نستخدم .PHONY؟

  • تجنب التعارضات: في حالة وجود ملف يحمل نفس اسم الهدف، فسيعتقد make أن الهدف محدث ولن ينفذ الأوامر المرتبطة. .PHONY يتجنب هذا.

  • تحسينات الأداء: تعتبر الأهداف الزائفة دائمًا "مهامًا يجب القيام بها"، مما قد يؤدي إلى تحسين سرعة تنفيذ الأوامر المرتبطة.

لماذا نستخدم %.o:%c للتجميع؟

  • الكفاءة: يتيح لك استخدام %.o:%c الاستفادة من عملية التحسين لإعادة ترجمة ما هو ضروري فقط.

  • عملي: بالنسبة للمشاريع الكبيرة، %.o:%c أكثر ملاءمة.

خاتمة

يجعل ملف Makefile المنظم جيدًا إدارة المشروع أسهل ويتجنب أخطاء التجميع. باتباع هذه القواعد وأفضل الممارسات، يمكنك إنشاء ملف Makefile فعال وقابل للصيانة.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/ashcript/comprendre-le-makefile-exemple-avec-le-langage-c-47n9 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3