सी विकास के लिए एक सुविधाजनक और उत्पादक विकास वातावरण स्थापित करने पर विचारों की तलाश। मुझे C संपादन Vim के साथ बहुत मददगार लगा, लेकिन मैं सुझावों का व्यापक नमूना प्राप्त करना चाहूंगा।
सी विकास के लिए एक सुविधाजनक और उत्पादक विकास वातावरण स्थापित करने पर विचारों की तलाश। मुझे C संपादन Vim के साथ बहुत मददगार लगा, लेकिन मैं सुझावों का व्यापक नमूना प्राप्त करना चाहूंगा।
जवाबों:
Emacs / Vim / Eclipse / ... - व्यक्तिगत रूप से मैं एक Emacs उपयोगकर्ता हूं। यदि आप नियंत्रण अनुक्रम अपने पिंकी टायर, बस वाइपर मोड यह मिल जाए। Emacs यूनिक्स में इतनी अच्छी तरह से एकीकृत है, जिससे सभी चीजों को एक जगह से नियंत्रित करना बहुत आसान हो जाता है। विम यहाँ भी एक अच्छा काम करता है, लेकिन मुझे लगता है कि एलिस्प में विम स्क्रिप्ट की तुलना में अधिक शक्तिशाली विस्तार भाषा है। सी विकास के लिए Emacs स्थापित करने के सभी तरीकों के बारे में घंटों तक बात कर सकता है। फ्लाईमेक मोड का उल्लेख किया गया है, और चीजों के लिए एक सुपर शुरुआत है। मैं एक्लिप्स से परिचित नहीं हूं, मुझे नहीं लगता कि यह कोड के लिए मेरी स्क्रीन पर पर्याप्त जगह छोड़ता है, न ही मुझे यह पसंद है कि यह कितना फूला हुआ है (विम उपयोगकर्ता Emacs के बारे में एक ही बात कहेंगे)। मैं विशुद्ध रूप से सौंदर्य कारणों से जावा में लिखी गई किसी भी चीज के खिलाफ गलत तरीके से पक्षपाती हूं।
Ctags - अपने C (या कई अन्य भाषा) को टैग करें ताकि Vim या Emacs या जो कुछ भी आपकी फ़ाइलों में हाइपर-टेक्स्ट लिंकिंग का थोड़ा सा कर सकें। कहते हैं कि आप इधर-उधर भटक रहे हैं और आप एक समारोह देखते हैं और आप यह कहते हुए अपना सिर खुजलाते हैं कि "वह फिर क्या करता है? नामकरण थोड़ा अस्पष्ट है।" प्लंक-प्लैंक-प्लंक, आप इसकी परिभाषा के लिए सीधे जाप कर सकते हैं।
Cmake / Gnu-Autotools - मेक महान है, लेकिन कुछ बिंदु पर आपको चीजों को थोड़ा सा अमूर्त करने की आवश्यकता होती है ताकि आपकी परियोजना सभी प्रकार के सिस्टम पर खुद का निर्माण कर सके जिसके लिए आपके पास परीक्षण का कोई तरीका नहीं है। यदि आपको केवल * निक्स पर अपना कोड बनाने के लिए लोगों की आवश्यकता है, तो ऑटोटूलस महान है, लेकिन, वास्तव में, आपको सीमेक के साथ वैसे भी खुद को परिचित करना चाहिए। Cmake टीम हर संभव विन्यास में कोड का निर्माण करती है और सुनिश्चित करती है कि आपको सिरदर्द से गुजरना नहीं है। यदि आप चाहते हैं कि आपकी परियोजना आसानी से दूसरों को खरीदने के लिए तैयार हो, तो इनमें से एक उपकरण महत्वपूर्ण है।
Git / Mercurial / Subversion / ... - आप महीनों के खर्च पर नियंत्रण सॉफ्टवेयर पर शोध कर सकते हैं, लेकिन आपको शायद Git के साथ जाना चाहिए। यह ठोस है, इसे वितरित किया गया है, @ $! #% & Linux कर्नेल को इसके साथ ट्रैक किया गया है। यदि यह लिनस के लिए काफी अच्छा है, तो यह आपके लिए काफी अच्छा हो गया है। मैं मर्क्यूरियल के बारे में भी अच्छी बातें सुनता हूं, जाहिरा तौर पर G ** gle उनका उपयोग करता है, इसलिए यह शायद बुरा नहीं है। कुछ लोग तोड़फोड़ और सीवीएस और व्हाट्सएप को पसंद करते हैं। मैं उन्हें पसंद नहीं करता क्योंकि वे अखंड हैं, जो मेरे लिए बहुत असुविधाजनक और सीमित है।
Stumpwm / wmii / XMonad / ... - कुछ बिंदु पर आप यह महसूस करने जा रहे हैं कि अपने काम को चालू रखने के लिए आप जो कुछ भी कर सकते हैं वह आपके आउटपुट को बेहतर बनाने वाला है। अपने दिमाग को तोड़ने के संदर्भ में रखने के सर्वोत्तम तरीकों में से एक टाइलिंग, कीबोर्ड ड्रिवन विंडो प्रबंधकों पर स्विच करना है। मैं StumpWM का एक व्यक्तिगत प्रशंसक हूं , जो खिड़की के प्रबंधकों का Emacs है। पूरी तरह से एक ऑन-द-फ्लाई कस्टमाइज़िंग कॉमन लिस्प प्रक्रिया में लागू किया गया है, जो कुछ भी आप अपने आप को दोहराव करते हुए पाते हैं, उसे फ़ंक्शंस में बंद किया जा सकता है और कमांड के लिए बाध्य किया जा सकता है। उत्तम सामग्री। मैं दूसरों में से किसी के बारे में ज्यादा नहीं जानता, लेकिन हो सकता है कि आगे के विस्तार के लिए दूसरे धागे को छोड़ दिया जाए। उपयोग के रूप में सबसे महत्वपूर्ण के रूप में उपयोग करें।
जीडीबी - मैं अन्य डिबगर्स से परिचित नहीं हूं, लेकिन यह डी-फैक्टो मानक प्रतीत होता है।
Valgrind - मुझे ऐसी किसी और चीज़ के बारे में पता नहीं है जो ऐसा करती है। Valgrind उन सभी pesky प्रोफाइलिंग / मेमोरी लीक शिकार के लिए महत्वपूर्ण है जिन पर आप जाना चाहते हैं। आप बस Valgrind के बिना malloc / calloc के साथ कोड नहीं लिख सकते।
मैं थोड़ी देर के लिए विम के साथ बना रहा, यह वीआईएम की मूल बातें जानने के लायक है क्योंकि आप हमेशा एक यूनिक्स बॉक्स पाएंगे जो केवल उसी के पास है, लेकिन मैंने एमएसीएस की कोशिश की और पीछे मुड़कर नहीं देखा। ग्रहण एक 'आधुनिक' विकल्प है, मेरी प्रणाली में तीनों हैं!
यह बहुत अधिक व्यक्तिगत पसंद है, इसलिए मुझे नहीं लगता कि मैं आपको बता सकता हूं कि मैं क्या उपयोग करता हूं। मेरे पास फ्लाइमेक मोड के साथ Emacs सेट है , जो समय-समय पर उस फ़ाइल को संकलित करता है जिस पर आप काम कर रहे हैं और कंपाइलर आउटपुट को यह पता लगाने के लिए कि आपने क्या त्रुटियां की हैं। यह बफर में त्रुटियों / चेतावनियों को बाधित करता है, और संबंधित संकलक त्रुटि संदेश दिखाता है
यदि आप यूनिक्स / लिनक्स के तहत सी विकास कर रहे हैं, तो आपको इस परियोजना का कोई महत्वपूर्ण आकार होने पर सीस्कोप का उपयोग करना होगा।
कार्य करने के लिए कूद - Cscope ब्राउज़िंग स्रोत कोड के लिए एक डेवलपर के उपकरण है foobar
की परिभाषा, सभी स्थानों पर जहां वेरिएबल प्राप्त foo
संदर्भित है सहित सभी फाइलों को मिल जाए, bar.h
, की सभी घटनाओं को बदलने bar
में baz
आदि,
इसके अलावा, आपने अपनी पोस्ट में Vim का उल्लेख किया है ... यहाँ Vim & Cscope का एक साथ उपयोग करने पर एक ट्यूटोरियल है ।
आप Netbeans C / C ++ पैकेज का उपयोग कर सकते हैं जो G ++ / GCC के साथ काम करते हैं:
मैं कंसोल में सी को विम के साथ संपादित करता हूं। मैं मेकफाइल्स को नियोजित करता हूं और मेरे कोड का परीक्षण करने के लिए कई संकलक हैं, जिसमें gcc, clang (LLVM) और icc शामिल हैं। अन्य चीजें जो मैं अपने विकास के माहौल का हिस्सा मानता हूं: grep, डीबगर्स और वालग्रिंड का उपयोग। अधिक जटिल बनाता है के लिए एक पटकथा भाषा। संस्करण नियंत्रण के लिए पकड़।
मेरे मन में कोड को संपादित करने के लिए आपके द्वारा उपयोग किए जाने से अधिक महत्वपूर्ण यह है कि आप अपने कोड को कैसे बनाते हैं। यह कैसे तय किया जाए कि स्टैक ओवरफ्लो के लिए एक सवाल है, लेकिन, जैसा कि आपने पूछा, मेरे पास अक्सर वितरण कोड के लिए ऑब्जेक्ट कोड के लिए एक अलग निर्देशिका है और परिणामी बिनर के लिए एक और फ़ोल्डर (y | ies)। मेरे पास एक परीक्षण फ़ोल्डर है जिसमें अधिक सी फाइलें हैं जो मैं लिख रहा हूं सभी जेनेरिक कोड का उपयोग करता हूं और अंतिम प्रोजेक्ट फाइल के साथ-साथ मैं इन वैलग्राइंड को भी शामिल करता हूं।
आप मोटर आईडीई की कोशिश कर सकते हैं । यह शाप आधारित है इसलिए आपको घर पर ऐसा महसूस होना चाहिए (टीएम)।) यह थोड़ा दुखद भी है क्योंकि इसे 5 साल तक बनाए नहीं रखा जा सकता है, इसलिए शायद किसी दिन तोड़ दिया जाए। हालांकि अभी भी - मेरा मानना है कि यह एक कोशिश के काबिल है।
मैं एम्बेडेड टर्मिनल के साथ gedit का उपयोग करता हूं।