2010-04-09 13 views
25

(मैं लिनक्स Ubuntu 9.10 चला रहा हूँ, इसलिए एक निष्पादन के लिए विस्तार executablefile.out है) मैं सिर्फ मॉड्यूलर प्रोग्रामिंग में हो रही है (एकाधिक फ़ाइलों के साथ प्रोग्रामिंग) सी में साथ संकलित कई सी फ़ाइलें और मुझे पता है कि कैसे करना चाहते हैं एक ही मेकफ़ाइल में एकाधिक फ़ाइलों को संकलित करें। उदाहरण के लिए, इन फ़ाइलों को संकलित करने के लिए मेकफ़ाइल क्या होगा: main.c, dbAdapter.c, dbAdapter.h? (वैसे, अगर आपने इसे अभी तक नहीं समझा है, तो मुख्य कार्य मुख्य में है।) क्या कोई भी मेकफ़ाइल के दस्तावेज़ के लिए एक लिंक पोस्ट कर सकता है?मेकअप

उत्तर

26

मेरी Makefile Tutorial: How To Write A Makefile देखें। यह एक अच्छी तरह से तैयार की गई मेकफ़ाइल प्रदान करता है जो इस तरह की एक परियोजना (कई सी और सी ++ स्रोत फ़ाइलों के साथ) का निर्माण करेगा, बताता है कि यह कैसे काम करता है, और सामान्य नुकसान के साथ-साथ खराब मेकफ़ाइल प्रथाओं के खिलाफ चेतावनी देता है जो जंगली में सामना करने के लिए बहुत आम हैं ।

+1

मैंने अभी इसे अपडेट किया है और प्रतिक्रिया सुनने में खुशी होगी। –

+2

अभी के लिंक के रूप में मृत। – Pat

+0

@MichaelAaronSafyan चूंकि आप क्रॉस-प्लेटफ़ॉर्म समर्थन का लक्ष्य रख रहे हैं, क्या आपके पास Windows फ़ाइल पर प्रोग्राम फ़ाइल की सफाई करने के लिए कोई सलाह है, यह $ (program_NAME) .exe पर आउटपुट करता है? –

32

पोस्ट किए गए लिंक सभी अच्छे हैं। आपके लिए विशेष मामला आप इसे आजमा सकते हैं। अनिवार्य रूप से सभी मेकफ़ाइल इस पैटर्न का पालन करते हैं। बाकी सब कुछ शॉर्टकट्स और मैक्रोज़ है।

program: main.o dbAdapter.o 
    gcc -o program main.o dbAdapter.o 

main.o: main.c dbAdapter.h 
    gcc -c main.c 

dbAdapter.o dbAdapter.c dbAdapter.h 
    gcc -c dbAdapter.c 

यहाँ कुंजी बात यह है कि Makefile क्रमिक रूप से नियमों को देखता है और के रूप में कुछ वस्तुओं की जरूरत है बनाता है।

यह पहला कार्यक्रम को देखो और है कि कार्यक्रम का निर्माण करने के देखेंगे, यह कुछ main.o और dbAdapter.o कहा जाता है की जरूरत है।

फिर यह मुख्य.ओ. हालांकि, main.o बनाने के लिए, इसे main.c और dbAdapter.h की आवश्यकता होगी (मुझे लगता है कि dbAdapter.h मुख्य.c में शामिल है)।

यह जीसीसी का उपयोग कर इसे संकलन के द्वारा main.o निर्माण करने के लिए उन स्रोतों का उपयोग करेगा। -सी इंगित करता है कि हम केवल संकलन करना चाहते हैं।

यह dbAdapter.o साथ एक ही बात करता है। जब यह दो ऑब्जेक्ट फाइलें होती है, तो यह उन्हें जोड़ने के लिए तैयार होती है। यह इस चरण के लिए जीसीसी कंपाइलर का भी उपयोग करता है। -o इंगित करता है कि हम प्रोग्राम नामक एक फाइल बना रहे हैं।

+3

... सिवाय इसके कि आपको संकलक को कड़ी-कोडिंग नहीं करना चाहिए, और आपको पूर्वनिर्धारित निर्माण नियमों का लाभ उठाना चाहिए ... मेरा ट्यूटोरियल देखें। –

+5

बेशक आप सही हैं। लेकिन ओपी मेकफ़ाइल के लिए अपेक्षाकृत नया है और मैं सिर्फ अंतर्निहित प्रक्रिया को बिना किसी संकेत के दिखाना चाहता था। – aduric

+3

"लेकिन ओपी मेकफ़ाइल के लिए अपेक्षाकृत नया है" - जिसे आपको अपने पहले उदाहरण में सामान्य त्रुटियों को डालने के बजाय उसे सही रास्ते से शुरू करना चाहिए। – mk12

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