שימוש בסיסי ב make

מטרת המדריך

מטרת מדריך זה להשלים את הפער בין החומר התאורטי הנלמד בכתה או מספר לימוד, לבין העבודה המעשית על המערכת.

למי מיועד המדריך

המדריך מיועד לתלמידים המתחילים את הלימוד התאורטי של שפת C, וזקוקים להדרכה כיצד לכתוב ולהדר את התכניות הראשונות שלהם במערכת GNU/Linux.

על איזו מערכת נבנה המדריך

המדריך נבנה על מערכת Ubuntu GNU/Linux אך כל מערכת לינוקס תתאים. הוראות ההתקנה המדוייקות ספציפיות למערכת מבוססת Debian GNU/Linux, אך ינתנו הסברים כלליים גם עבור מערכות אחרות.

לפני תחילת העבודה

עברו על המדריך לכתיבת תכנית בשפת C ובשימוש במהדר gcc ובדקו שאתם שולטים בכתיבה, הידור והרצה של תכניות C פשוטות:

הידור בעזרת gcc

כמו שראינו במדריך לשימוש ב gcc, הידור בעדרת פקודות ישירות ל gcc עלול להיות משעמם כאשר מדובר בפרויקט גדול המכיל קבצים רבים. לשם כך נבנו מספר מערכות שבאות למכן את התהליך, מדריך זה ידגים שימוש ב make לצורך מיכון התהליך.

make

כאשר מריצים את הפקודה make בשורת הפקודה, היא מחפשת קובץ בשם Makefile. קובץ ה Makefile מכיל תסריט המגדיר לתכנת make כיצד יש להדר את הפרויקט שלנו.

קובץ Makefile פשוט יכיל שני חלקים
  • חלק של הגדרת משתנים. המשתנים בד”כ יכילו מחרוזות טקסט שימשו בחלק השני של הקובץ.
  • חלק של הגדרת יעדים, דרישות קדם ודרכי ביצוע:
    • הגדרת יעדים: בד”כ שמות של קבצי הפלט, קבצי אוביקט או קבצי הרצה
    • הגדרת דרישות קדם: בד”כ שמות קבצים הדרושים למהדר לצורך הכנת קבצי הפלט. לדוגמה קבצי קוד או קבצי אוביקט
    • הגדרת דרכי ביצוע: בד”כ פקודות להפעלת מהדר gcc

מדריך זה יסביר רק שימוש פשוט ב make כדאי לקרוא על שימושים מתקדמים יותר בתכנה באתר gnu מדריך שימוש ב gnu make

הגדרת משתנים
  CC = gcc

שורה זו הגדירה את המשתנה CC להיות המחרוזת gcc. מאוחר יותר נוכל להשתמש במשתנה זה ע”י קריאה ל (CC)$

ישנם מספר משתנים המוגדרים מראש ללא שיהיה צורת להגדירם באופן מפורש בקובץ ה Makefile החשובים הם:

  1. CC - מהדר ה C במערכת.
  2. CFLAGS - הדגלים הרגילים המועברים למהדר לצורך הידור קבצים.
  3. LDFLAGS - הדגלים הרגילים המועבדים למקשר לצורך קישור קבצים.
הגדרת מטרות

הגדרת מטרה לדוגמה:

  main.o: main.c writeln.h
  	$(CC) $(CFLAGS) main.c

בדוגמה זו היעד הוא הקובץ make.o , הדרישות להסגת היעד הם קיום הקבצים main.c ו writeln.h והדרך להשגת היעד היא הרצת מהדר ה C של המערכת עם הדגלים הרגילים על הקובץ main.c צריך לשים לב כי לפני הפקודה להפעלת מהדר ה C יש tab.

חשוב מאד אין רווים לפני שם ה target, חייבים להכניס tab לפני מחרוזת הביצוע. אם לפני מחרוזת הביצוע יש רווחים ולא tab , תכנת ה make לא תבין את קובץ המ Makefile.

מהלך העבודה

כתיבת התכנית

את התכנית ניתן לכתוב בכל עורך טקסט. אנו נשתמש בדוגמה זו בעורך הטקסט של Gnome.

כתוב פרויקט פשוט הבנוי משני קבצי קוד וקובץ הגדרות אחד בעורך הטקסט, כמו כן נביא בהמשך שתי אפשרויות לכתיבת תסריט ה Makefile . הראשונה פשוטה להבנה, אך ארוכה ומסורבלת. השניה משתמשת בתכונות מתקדמות של תכנת make, קובץ ה Makefile קצר ונוח לשימוש אך קשה יותר להבנה. כדי להבין את השימוש בקיצורים ותכונות מתקדמות של make כדאי לקרוא מדריכים נוספים מדריך שימוש ב gnu make

  • קובץ א. writeln.h קובץ הגדרות
/*code*/

/* file name: writeln.h */

#ifndef __WRITELN_H__
#define __WRITELN_H__

void
writeln (const char * string);

#endif /* __WRITELN_H__ */

/*code*/
  • קובץ ב. writeln.c קובץ הקוד של פונקצית העזר בה נשתמש בפרויקט שלנו
/*code*/

/* file name: writeln.c */

#include <stdio.h>

#include "writeln.h"

void
writeln (const char * string)
{
	printf ("%s\n", string);
} 

/*code*/
  • קובץ ג. main.c קובץ הקוד של הפונקציה הראשית בפרוייקט שלנו
/*code*/

/* file name: main.c */

#include "writeln.h"

int
main (int argc, char * argv [])
{
	writeln ("Hello world");

	return 0;
} 

/*code*/
  • קובץ ד.1 Makefile ללא קיצורים, הקובץ מובן ופשוט, אך ארוך ומסורבל.
#code

#file: Makefile
CC = gcc
CFLAGS = -g -Wall -c
LDFLAGS = -O2

all: hello

hello: main.o writeln.o
	$(CC) $(LDFLAGS) main.o writeln.o -o hello

main.o: main.c writeln.h
	$(CC) $(CFLAGS) main.c

writeln.o: writeln.c writeln.h
	$(CC) $(CFLAGS) writeln.c

clean:
	rm -f *.o hello

.PHONY: clean

#code
  • קובץ ד.2 Makefile עם שימוש בקיצורים, הקובץ קצר ונוח לשימוש.
#code

#file: Makefile

all: main

main: main.o writeln.o

.c.o:
	$(CC) $(CFLAGS) -c $< -o $@

#code
הידור התכנית בעזרת make

אנו נהדר את התכנית בעזרת תכנת make, מתוך המסוף (ראה תמונת מסך בסוף המדריך)

הידור:

 make
הרצת התכנית

קוד:

  main/.
תמונת מסך

כך צריכה להראות התכנית בעורך הטקסט ובמסוף בו אתם מבצעים את ההידור וההרצה.

Makefile - ללא שימוש בקצורים:

c_prog_multi_make1.jpg

(לחץ על התמונה כדי לקבל תמונה מוגדלת)

Makefile - שימוש בקיצורים:

c_prog_multi_make2.jpg

(לחץ על התמונה כדי לקבל תמונה מוגדלת)

איך להמשיך

בהמשך העבודה בודאי תרצו להתקין כלי פיתוח נוספים וספריות פיתוח חדשות. אפשר למצוא מדריכים לשימוש בכלים אלו ברשת ופה באתר.

מדריכי תכנות

מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.

מדריכים/שימוש_בסיסי_ב_make.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0