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

کمک و پشتیبانی => انجمن عمومی => نویسنده: ffthel در 12 امرداد 1394، 03:59 ب‌ظ

عنوان: مشکل با Makefile [حل شد]
ارسال شده توسط: ffthel در 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 میزنم فقظ خط اول اجرا میشه و باقیش اجرا نمیشه
مشکل چیه ؟ ممنون
عنوان: پاسخ : مشکل با Makefile
ارسال شده توسط: احمد حمزه ئی در 12 امرداد 1394، 05:24 ب‌ظ
حالا وقتی  make میزنم فقظ خط اول اجرا میشه و باقیش اجرا نمیشه
مشکل چیه ؟ ممنون

سلام
طبق این سوال در مورد default target تو stackoverflow (http://stackoverflow.com/questions/2057689) وقتی شما دستور 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