मेरे पास "main.c" नामक एक फ़ाइल है। क्या सबसे आसान मेकफ़ाइल मुझे इस फ़ाइल को निष्पादन योग्य में संकलित करना पड़ सकता है जिसे मैं ./blah
चला सकता हूं?क्या सबसे आसान मेकफ़ाइल मैं एक सी फाइल के लिए काम कर सकता है?
उत्तर
all:
gcc -o blah main.c
आपको यहां मेकफ़ाइल की आवश्यकता नहीं है, सरल खोल स्क्रिप्ट ठीक है।
असाइनमेंट शीट का कहना है कि हमें मेकफ़ाइल शामिल करना होगा। – Ash
जब मैंने इसका इस्तेमाल किया और 'मेक' चलाया - यह "मेकफ़ाइल: 2: *** गायब विभाजक देता है। रोकें।" – Ash
@Ash: 'gcc' के सामने थोड़ा एक टैब होना चाहिए, न कि रिक्त स्थान। (यदि आप रिक्त स्थान का उपयोग करते हैं तो आपको वह त्रुटि मिलती है।) –
all: blah
blah: main.c
gcc main.c -o blah
मैंने कुछ और दिखाए जाने से पहले अपना उत्तर लिखा और पोस्ट किया, और मुझे 'होमवर्क' टैग नहीं मिला। मैं क्रिस लुटज़ से सहमत हूं; आप जीवन में कहीं भी ऐसे दुखी कार्य पर मदद मांगने के लिए नहीं मिलेगा। –
'सब: ब्लाह 'यह सब आसान बनाता है कि इसे चीजों को तोड़ने की ज़रूरत है और अगर' वास्तव में 'नाम की एक फ़ाइल वास्तव में मौजूद है। इस बिंदु के अलावा, यह सबसे अच्छा जवाब है। –
वास्तव में, आगे विचार के बाद, इस साधारण मामले में 'सभी' नामक एक फ़ाइल निर्भरता जांच को तोड़ने वाला नहीं है; यह अभी भी अनावश्यक है क्योंकि किसी भी मामले में पहला लक्ष्य डिफ़ॉल्ट लक्ष्य के रूप में कार्य करेगा। –
आप चला रहे हैं जीएनयू करें और अगर आप अतिरिक्त पुस्तकालयों में लिंक करने के लिए की जरूरत नहीं है, सबसे सरल makefile कोई makefile बिल्कुल है। प्रयास करें:
make main
आप main
निर्दिष्ट करने के लिए नहीं करना चाहते हैं, तो आप निम्नलिखित एक पंक्ति का उपयोग कर सकते हैं Makefile:
all: main
जीएनयू बनाओ कई अंतर्निहित नियम है कि यह अगर आप का उपयोग करता है उन्हें खुद को परिभाषित न करें। एक यह काम करता है कि है की तरह कुछ:
%: %.c
$(CC) $^ -o [email protected]
अधिक जानकारी के लिए, देखें: http://www.gnu.org/software/make/manual/make.html#Using-Implicit
स्पष्ट रूप से असाइनमेंट की आवश्यकता है कि आउटपुट 'blah' हो, न कि 'मुख्य', इसलिए उसे मेकफ़ाइल की आवश्यकता होगी। उपरोक्त अभी भी उपयोगी जानकारी है, लेकिन वास्तव में यहां लागू नहीं होगी। –
यदि आपके निष्पादन योग्य को 'blah' कहा जाना चाहिए तो सबसे आसान होगा अगर आपकी अनुमति है तो आपकी स्रोत फ़ाइल को' blah.c' पर पुनर्नामित करें। –
@ टी.जे.क्रॉडर: 'ब्लाह' एक आवश्यकता प्रतीत नहीं होता है, बल्कि एक उदाहरण है: ओपी ने कहा "मैं * * */blah' * चला सकता हूं। तो यह एक-लाइनर 'मेकफ़ाइल' ठीक लगता है – MestreLion
सरलतम मैं सिफारिश करेंगे है:
myprog: myprog.o
$(CC) -o [email protected] @^
वाया निहित नियमों, इस का परिणाम देगा एक अलग चरण जो इसे जोड़ने से पहले myprog.c
myprog.o
संकलित करता है। कारण मुझे यह पसंद (अरनॉड द्वारा) अन्य जवाब की तुलना में बेहतर है कि यह makefile काफी विस्तार करने के लिए बिना अधिक स्रोत फ़ाइलों को मापता है:
myprog: myprog.o foo.o bar.o helper.o my.o your.o his.o her.o
$(CC) -o [email protected] @^
क्या यह '@ ^' के बजाय '$ ^' होना चाहिए? – user2023370
रूप Jander कहा, यदि आपका स्रोत एक भी blah.c
नाम की फ़ाइल है आप उत्पादन करने के लिए इस का उपयोग कर सकते एक निष्पादन blah
नामित:
all: blah
या भी:
blah:
बाकी सब कुछ है अंतर्निहित जब जीएनयू make
का उपयोग करते समय यह अत्यंत सरल है, यह और अधिक जटिल कुछ उत्तर के ऊपर कुछ फायदे हैं करता है:
- संकलक hardcoded नहीं है: अपने वातावरण आप के लिए
gcc
चयन करते हैं! - आपका प्रोग्राम नाम केवल एक बार, एक अच्छा DRY प्रोग्रामिंग अभ्यास सेट है।
- इंटरमीडिएट
*.o
फ़ाइलों को नहीं बनाता है जो इस साधारण परियोजना के लिए आवश्यक नहीं हैं।
जिसके अनुसार, मैं दृढ़ता से आप कम से कम clean
और all
नियमों और -Wall
झंडे जोड़कर अपने Makefile
सुधार करने के लिए सुझाव देते हैं।यह निम्नलिखित Makefile
के साथ किया जा सकता है, अभी भी सब से ऊपर फायदे रखने:
TARGET=blah CFLAGS=-Wall .PHONY: all clean all: $(TARGET) $(TARGET): clean: rm -f $(TARGET)
- 1. क्या मैं विम में एक फाइल ट्रांसफर कर सकता हूं?
- 2. क्या कोई (लिनक्स) सी ++ आईडीई है जो मेकफ़ाइल से एक प्रोजेक्ट 'निर्माण' कर सकता है?
- 3. एक अजगर पैकेज के लिए वैकल्पिक सी एक्सटेंशन बनाने का सबसे आसान तरीका क्या है?
- 4. क्या मेकफ़ाइल कॉलिंग वातावरण अपडेट कर सकता है?
- 5. सी #: समय घटाने का सबसे आसान तरीका क्या है?
- 6. मेकफ़ाइल लक्ष्य `.oo` के लिए क्या है?
- 7. क्या मैं एक केंद्रीय फाइल से सी # प्रीप्रोसेसर निर्देश सेट कर सकता हूं?
- 8. सी में एक फाइल खोलना क्या है?
- 9. PHP में एक तिथि बढ़ाने के लिए सबसे आसान तरीका?
- 10. मैं डीबग कैसे कर सकता हूं कि सबसे आसान MySQL क्वेरी झूठी क्यों लौटती है?
- 11. मैं एक एमवीसी नियंत्रक से डाउनलोड करने के लिए एक फाइल कैसे पेश कर सकता हूं?
- 12. मैं अंत उपयोगकर्ताओं के संकलन के लिए आसान कैसे अपना उच्च मॉड्यूलर प्रोजेक्ट आसान बना सकता हूं?
- 13. मेकफ़ाइल का उपयोग करके बड़ी सी ++ परियोजनाओं के लिए एक अच्छी निर्देशिका संरचना क्या है?
- 14. क्या मैं विजुअल स्टूडियो में एक प्रोजेक्ट में सी ++ और सी मिश्रण कर सकता हूं?
- 15. आई-फोन के लिए सी # प्रोग्रामर विकसित करने का सबसे आसान तरीका क्या है?
- 16. एक सी-फाइल में एफएफटी
- 17. सी # का उपयोग कर नेटवर्क पर फाइल भेजने का सबसे अच्छा तरीका क्या है?
- 18. खिड़की में एक div के ऊर्ध्वाधर + क्षैतिज केंद्र के लिए सबसे आसान तरीका क्या है?
- 19. सी ++ मेकफ़ाइल
- 20. सी ++ एक पीडीएफ फाइल
- 21. क्या शुरुआती लोगों के लिए एक आसान, आसान, बुनियादी है? (वीबी 2.0 के साथ क्या हुआ?)
- 22. मैं एक पूर्ण सी ++ निर्माण कैसे कर सकता हूं?
- 23. सहयोगी तारों (कुंजी/मान) के साथ काम करने का सबसे आसान तरीका क्या है?
- 24. ओएसएक्स पर विंडोज़ काम के लिए लिखा गया एक .NET प्रोग्राम क्या कर सकता है?
- 25. एक बहुत आसान सी ++ प्रोफाइलर (वीसी ++) क्या है?
- 26. मैं मोंगोडीबी ग्रिडएफएस डेटाबेस को सबसे आसान तरीका कैसे बैकअप कर सकता हूं?
- 27. सबसे आसान तरीका एक कार्यक्रम .NET 4
- 28. एक मेकफ़ाइल
- 29. # कैसे करता है! काम और मैं इसे कॉफीस्क्रिप्ट के लिए कैसे काम कर सकता हूं?
- 30. PHP के लिए ओआरएम ढांचे का उपयोग करने के लिए सबसे आसान क्या है?
कृपया हमें पूछ से पहले अपना होमवर्क करना कुछ प्रयास करते हैं। एक कारण है कि आपका प्रोफेसर चाहता है कि आप मेकफ़ाइल का उपयोग करें - ताकि आप अधिक उपयोगी परियोजनाओं के लिए मेकफ़ाइल लिखना सीख सकें। –
क्षमा करें, होमवर्क पुलिस को परेशान करने का मतलब नहीं था। मैंने इसे गुगलिंग करने का प्रयास किया है, लेकिन मेकफ़ाइल स्पष्ट रूप से अविश्वसनीय रूप से शक्तिशाली है, और यह बेहद जटिल हो सकता है। मैं आईवी को स्वीकार करता हूं क्योंकि इसमें कुछ परेशानी होती है। यह विषय एक प्रोग्रामिंग विषय नहीं है, लेकिन मूल्यांकन के लिए देशी ओएस कार्यों को कॉल करने के लिए सी कोड की आवश्यकता होती है। मैंने पहले कभी सी को छुआ नहीं है, और यह असाइनमेंट कुछ घंटों में है। मैं निराश था, और हताश और कुछ मदद की ज़रूरत थी। क्षमा करें अगर मैं आपको परेशान करता हूं। – Ash