سؤال

أنا مواجهة مشكلة غرابة إلى حد ما مع صنع. يحتوي ملف My Make على:

all: item1 item2

item1: dep1 dep2
dep1:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D_ALL_OBJECTS)
    @echo
dep2:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D2_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D2_ALL_OBJECTS)
    @echo
item2: ...
.....

حاليا، "make -f Makefile item1"يعمل، ولكن عندما أحاول"make -f Makefile all"لا يعمل. هل يرى الناس أي مشاكل في بلدي makefile؟

شكرا


إضافة:

حسنا، يبدو أن هذا يبدو أنه لا يسمح بالأهداف التي لها نفس الاسم مثل بعض الدليل في المستوى الحالي. ملاحظة:

  • "الكل" هو دليل @ $ (المنزل) / التطبيقات
  • all1: item1 item2 ويعمل
  • all: item1 item2 لا يعمل

لذلك يبدو أن أي اسم مستهدف له نفس الاسم كإفادات يدرس (كما في، يفشل في فعل أي شيء مفيد).

أنا متأكد من أنني أفعل شيئا خاطئا سخيفا هنا.

هل كانت مفيدة؟

المحلول

عندما تكتب:

all: item1 item2

ثم طلب make all, ، هذا يخبر make:

  • ابحث عن كائن نظام الملفات يسمى all وتأكد من أي شيء يعتمد عليه (item1, item2) حتى الأن.
  • إذا all غير موجود أو قد انتهى الأمر أي من كائنات نظام الملفات المسماة item1 أو item2, ، ثم قم بالإجراءات المحددة (لا يوجد في هذا المثال) ثم تنظر all حتى الآن.
  • إذا all هو دليل، إنه موجود. إذا تم تعديلها مؤخرا، فستكون محدثة.

اقتراح استخدام .PHONY: all item1 item2 جيد لصنع جنو؛ لا يعمل مع المتغيرات الأخرى make.

لا تستخدم الأسماء المستهدفة هي أسماء الدليل - ما لم تكن متأكدا من أنك تعرف ما تفعله. واستخدام .PHONY.

نصائح أخرى

يحاول إعلان زائف كل هدف الخاص بك.

يبدو جيدا مثل "جعل" لا يسمح بالأهداف التي لها نفس الاسم مثل بعض الدليل في المستوى الحالي. ملاحظة :

- "الكل" هو دليل @ $ (الصفحة الرئيسية) / Apps -All1 / 2/3: Item1 Item2 Works -all: Item1 Item Item2 لا يعمل ذلك هو أي اسم هدف له نفس اسم الدليل.

أنا متأكد من أنني أفعل أي شيء خاطئ سخيف هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top