ملف Makefile هو ملف تستخدمه أداة الإنشاء لأتمتة تجميع البرامج. فيما يلي القواعد القياسية وأفضل الممارسات لكتابة ملف Makefile فعال:
target: prerequisites command
القاعدة الافتراضية: الهدف الأول في Makefile هو الهدف الذي سيتم إنشاؤه افتراضيًا.
تجميع الملفات المصدرية:
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 $
- Phonies: يستخدم .PHONY للأهداف التي ليست ملفات.
.PHONY: clean clean: rm -f $(OBJECTS) $(TARGET)
- المتغيرات: يستخدم المتغيرات لتبسيط إدارة المسارات والخيارات.
CC = gcc CFLAGS = -Wall
إدارة التبعية: تستخدم قواعد وأنماط ضمنية لتقليل التكرار.
التبعيات التلقائية : يمكنك إنشاء التبعيات تلقائيًا لملفات .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 $الممارسات الجيدة
مسافة بادئة بعلامات التبويب: يجب وضع مسافة بادئة للأوامر في القواعد بعلامات جدولة، وليس مسافات.
رمز التعليق : يستخدم التعليقات لشرح أقسام ملف Makefile.
ملفات المجموعة: إذا كان مشروعك يحتوي على ملفات متعددة، فقم بتنظيمها في أدلة فرعية واستخدم المتغيرات لإدارة المسارات.
استخدام القواعد الضمنية: استفد من قواعد الإنشاء المضمنة لتجنب إعادة كتابة القواعد المشتركة.
لماذا نستخدم .PHONY؟
تجنب التعارضات: في حالة وجود ملف يحمل نفس اسم الهدف، فسيعتقد make أن الهدف محدث ولن ينفذ الأوامر المرتبطة. .PHONY يتجنب هذا.
تحسينات الأداء: تعتبر الأهداف الزائفة دائمًا "مهامًا يجب القيام بها"، مما قد يؤدي إلى تحسين سرعة تنفيذ الأوامر المرتبطة.
الكفاءة: يتيح لك استخدام %.o:%c الاستفادة من عملية التحسين لإعادة ترجمة ما هو ضروري فقط.
عملي: بالنسبة للمشاريع الكبيرة، %.o:%c أكثر ملاءمة.
يجعل ملف Makefile المنظم جيدًا إدارة المشروع أسهل ويتجنب أخطاء التجميع. باتباع هذه القواعد وأفضل الممارسات، يمكنك إنشاء ملف Makefile فعال وقابل للصيانة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3