2010-11-15 10 views
13

मैं उबंटू 10.04 चला रहा हूं। जब भी मैं make clean चलाता हूं, मुझे यह मिलता है:"साफ करें" परिणाम "लक्ष्य बनाने के लिए कोई नियम नहीं 'साफ करें"

बनाना: *** लक्ष्य 'साफ' करने का कोई नियम नहीं है। रूक जा।

CC = gcc 
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall 
PROGRAMS = digitreversal 
all : $(PROGRAMS) 
digitreversal : digitreversal.o 
     $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) 
.PHONY: clean 
clean: 
     @rm -f $(PROGRAMS) *.o core 

कोई भी विचार क्यों अपने काम नहीं कर रहा:

यहाँ मेरी makefile है?

संपादित करें: यह कर की तरह लगता है:

make -f Makefile.txt clean 

काम करता है। अब: क्या बदलने के लिए कोई सेटिंग है इसलिए मुझे हर बार -f Makefile.txt करने की ज़रूरत नहीं है?

+3

सुनिश्चित करें कि आप सही 'मेकफ़ाइल' का उपयोग कर रहे हैं। ऐसा हो सकता है कि उपरोक्त को 'मेकफ़ाइल' नाम दिया गया है और आपके पास 'मेकफ़ाइल' भी है जिसका 'साफ' लक्ष्य नहीं है और जब आप 'साफ करें' का आह्वान करते हैं, तो डिफ़ॉल्ट रूप से 'मेकफ़ाइल' का उपयोग करता है और 'मेकफ़ाइल' नहीं होता है। – codaddict

+4

नाम में विस्तार के बिना बस 'Makefile.txt' को' मेकफ़ाइल' 'का नाम दें। –

+0

मेरे मैक पर एक ही समस्या थी। कुछ कारणों से 'मेकफ़ाइल' मेक कमांड द्वारा नहीं मिला था। 'मेकफ़ाइल' नामकरण करने से समस्या हल हो गई। हालांकि यह बेतुका है! – Foad

उत्तर

16

ऐसा लगता है कि आपके मेकफ़ाइल का नाम 'मेकफ़ाइल' या 'मेकफ़ाइल' नहीं है। यदि यह अलग है तो 'abc' 'make -f abc clean' चलाने का प्रयास करें

1

मेकफ़ाइल में आप सबसे आम त्रुटियों से पीड़ित हैं। आपको हमेशा प्रत्येक कमांड की शुरुआत में एक टैब डालना होगा। आपने $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) और @rm -f $(PROGRAMS) *.o core लाइनों से पहले रिक्त स्थान लगाए हैं। यदि आप उन्हें एक टैब से बदलते हैं, तो आप ठीक होंगे।

हालांकि, यह त्रुटि "लक्ष्य बनाने के लिए कोई नियम नहीं ..." त्रुटि का कारण नहीं बनती है। इसका शायद मतलब है कि आपकी समस्या आपके मेकफ़ाइल से परे है। क्या आपने यह जांच लिया है कि यह सही मेकफ़ाइल है, जैसा कि आप अपने आदेश निर्दिष्ट करना चाहते हैं? बनाने के लिए इसे पैरामीटर के रूप में स्पष्ट रूप से पास करने का प्रयास करें और हमें बताएं कि क्या होता है।

+6

यदि टैब गुम हैं तो आपको 'लक्ष्य बनाने के लिए कोई नियम नहीं' मिलेगा, आपको इसके बजाय 'लापता विभाजक' त्रुटि मिलेगी। – codaddict

+0

आप सही हैं, और जैसा कि मैंने स्पष्ट किया है, यह मेकफ़ाइल के साथ कोई समस्या नहीं होगी, प्रति से। –

0

यह मेरे लिए काम करता है। क्या आप वाकई टैब के साथ इंडेंट कर रहे हैं?

CC = gcc 
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall 
PROGRAMS = digitreversal 
all : $(PROGRAMS) 
digitreversal : digitreversal.o 
    [tab]$(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) 

.PHONY: clean 
clean: 
    [tab]@rm -f $(PROGRAMS) *.o core 
1

जांचें कि फ़ाइल को GNUMakefile, मेकफ़ाइल या मेकफ़ाइल कहा जाता है।

यह कुछ और कहा जाता है (और आप इसे नाम बदलने के लिए नहीं करना चाहते हैं) तो कोशिश करते हैं:

-f स्वच्छ

7

मैं तुम्हें अब तक यह पता लगा है लगता है othermakefilename बनाते हैं। उत्तर आपके पहले मेल में ही छिपा हुआ है।

make आदेश डिफ़ॉल्ट रूप से लग रहा है makefile, Makefile, और इनपुट फ़ाइल के रूप में GNUMakefile के लिए और आप अपने फ़ोल्डर में Makefile.txt कर रहे हैं। बस फ़ाइल एक्सटेंशन को हटाएं (.txt) और इसे काम करना चाहिए।

संबंधित मुद्दे