انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: مشکل با Makefile [حل شد]  (دفعات بازدید: 645 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین ffthel

  • Jr. Member
  • *
  • ارسال: 61
  • جنسیت : پسر
مشکل با Makefile [حل شد]
« : 12 امرداد 1394، 03:59 ب‌ظ »
سلام
من یک فایل به اسم Makefile ساختم
توش کد های زیر رو نوشتم
dt.o :dt.c
gcc $(CFLAGS) -c dt.c
tt.o :tt.c
gcc $(CFLAGS) -c tt.c
main: dt.o tt.o
gcc $(CFLAGS) -o main dt.o tt.o
clean:
rm -f *.o main
حالا وقتی  make میزنم فقظ خط اول اجرا میشه و باقیش اجرا نمیشه
مشکل چیه ؟ ممنون
« آخرین ویرایش: 13 امرداد 1394، 01:39 ق‌ظ توسط ffthel »

آفلاین احمد حمزه ئی

  • Jr. Member
  • *
  • ارسال: 66
  • جنسیت : پسر
    • Github
پاسخ : مشکل با Makefile
« پاسخ #1 : 12 امرداد 1394، 05:24 ب‌ظ »
حالا وقتی  make میزنم فقظ خط اول اجرا میشه و باقیش اجرا نمیشه
مشکل چیه ؟ ممنون

سلام
طبق این سوال در مورد default target تو stackoverflow وقتی شما دستور make رو بدون مشخص کردن هدف می زنید،
make میاد و اولین هدفی که توی makefile تعیین کردید رو اجرا می کنه، یعنی dt.o

چند تا کار می تونید انجام بدید:
1. مستقیما به make بگید که هدف main رو اجرا کنه یعنی دستور make main
2. توی makefile هدف پیش فرض رو با استفاده از متغییر DEFAULT_GOAL. برای make مشخص کنید:
.DEFAULT_GOAL := main
dt.o :dt.c
gcc $(CFLAGS) -c dt.c
tt.o :tt.c
gcc $(CFLAGS) -c tt.c
main: dt.o tt.o
gcc $(CFLAGS) -o main dt.o tt.o
clean:
rm -f *.o main

3. هدف main رو بیارید ابتدای makefile تا وقتی make رو زدید اون اجرا بشه:
main: dt.o tt.o
gcc $(CFLAGS) -o main dt.o tt.o
dt.o :dt.c
gcc $(CFLAGS) -c dt.c
tt.o :tt.c
gcc $(CFLAGS) -c tt.c
clean:
rm -f *.o main