2009-03-17 11 views
8

से सी ++ को संकलित और डीबग करने का प्रयास कर रहा हूं मैं विंडोज एक्सपी पर कोड :: ब्लॉक का उपयोग कर सी ++ और एलेग्रो सीख रहा हूं, और हाल ही में विम सीखने की तरह महसूस किया है। हालांकि, मुझे नहीं पता कि प्रोग्राम को मैन्युअल रूप से कैसे संकलित करना है (यानी, आईडीई का उपयोग किए बिना)।विम

विम के भीतर से संकलन के लिए, मुझे gcc के लिए मेकप्रग सेट करने तक मिल गया है, लेकिन मुझे समझ में आता है कि मुझे मेकफ़ाइल की भी आवश्यकता है। वह क्या है और मैं एक कैसे लिखूं? क्या यह मेकफ़ाइल के साथ है कि मैं एलेग्रो जैसे पुस्तकालयों का उपयोग कर सकता हूं?

इसके अलावा, मुझे सीबी डीबगर का बहुत शौक मिला है (मैं जीडीबी का उपयोग कर रहा हूं)। क्या विम के साथ कुछ ऐसा करना संभव है?

धन्यवाद।

+2

यदि आप वास्तव में एक आईडीई के बिना प्रोग्राम (या लाइव!) संकलित करना सीखना चाहते हैं - जो मुझे लगता है कि बहुत अच्छा है - मैं उस चीज़ को शुरू करने की सलाह दूंगा जो विंडोज नहीं है, भले ही आप वहां वापस जाने की योजना बना रहे हों । –

उत्तर

4

आपको की आवश्यकता नहीं है एक मेकफ़ाइल, लेकिन यह यूनिक्स-जैसी प्रणालियों पर कोड संकलित करने का पसंदीदा (और संभवतः सबसे स्वच्छ) तरीका है।

मुझे नहीं पता कि जीएनयू मेक में विंडोज पोर्ट है, लेकिन आप इसे Cygwin के तहत चला सकते हैं।

जीएनयू के बारे में अधिक जानने के लिए करते हैं और Makefiles: compile directly from vim

:

इसके अलावा, इस प्रश्न देखें अनिवार्य संपादन: मैं विंडोज या सिगविन का उपयोग नहीं करता हूं। आप उस विभाग पर epochwolf's advice लेना चाहेंगे।

+1

NOOOooo ... हर कीमत पर साइगविन से बचें। यह धीमी, बदसूरत है, और वास्तव में देशी विंडोज ऐप्स पर कोई फायदा नहीं है। यदि आप विंडोज़ पर जीसीसी और संबंधित उपकरण चाहते हैं, तो आपको 'mingw' और 'msys' की आवश्यकता है। उनके साथ शामिल करने का मूल संस्करण भी है। – davr

+0

अरे, मैं बस कह रहा हूँ। मुझे नहीं पता कि सिगविन कोई अच्छा है या नहीं, मैं विंडोज का उपयोग नहीं करता हूं। =) –

1

EDIT1: कुछ बुकमार्क जो आपके लिए उपयोगी हो सकता है:

GNU make tutorial (यह एक जीसीसी का उपयोग करता है और बनाने के लिए, तो यह सही अपने गली तक होना चाहिए)

Another one

कुछ की Win port जीएनयू यूटिल्स का उल्लेख कर सकता था; मैं व्यक्तिगत रूप से इनका उपयोग करता हूं और विंडोज प्लेटफार्म पर उनके साथ कोई समस्या नहीं है।


हां, आप मेकफ़ाइल के बिना संकलित कर सकते हैं। यदि आपका प्रोग्राम सरल है (उदाहरण के लिए, केवल एक फ़ाइल) आप संकलक को कॉल करके और उसी पंक्ति में प्रोग्राम के नाम सहित संकलित कर सकते हैं (याद रखें कि यह जीसीसी के साथ कैसे जाता है)। बेशक, चीज़ों को आसान बनाने के लिए इसे विम के भीतर एक कुंजी में मैप किया जा सकता है, इसलिए आपको कमांड प्रॉम्प्ट पर वापस जाने की आवश्यकता नहीं है।

यदि आप एक बड़ी परियोजना पर काम कर रहे हैं, जिसमें मेकफ़ाइल की तुलना में कई फाइलें और ऐसे हैं, तो उपयोगी है। यह फाइलों के माध्यम से "खोज" करेगा, निर्भरताओं को निर्धारित करेगा, उन्हें निर्माण में शामिल करेगा, शायद स्रोत फ़ाइलों को एक निर्देशिका में रखेगा और परिणामी exe फ़ाइल को दूसरे में और इस तरह रखा जाएगा। तो यह सिर्फ संकलन की तुलना में एक लिंकिंग और बिल्डिंग सिस्टम से अधिक है। हालांकि कैन बर्क गुडर के जवाब में जीएनयू का उल्लेख किया गया है, लेकिन "बिल्डिंग मेकफ़ाइल" ("मेकफ़ाइल" उस तरह के ऑपरेशन के लिए समानार्थी शब्द का एक प्रकार बन गया है) के लिए कई अन्य लोग हैं - यहां, आप कर सकते हैं इस link पर कुछ अन्य विकल्प देखें।इतिहास में इसके हिस्से के कारण अच्छा प्रदर्शन है: बनाने के लिए, लेकिन दूसरों को आसानी से भी उपयोग किया जा सकता है (VimWikia पर इस विषय पर बहुत से ग्रंथ हैं।

ठीक है, बस यह है। बस मेरे 0,2 यूरो :)

4

MinGW पर देखें। यदि आपको केवल जीसीसी की आवश्यकता है और मैं बनाना चाहता हूं तो मैं सिग्विन से बचूंगा। आप MinGW और MSYS दोनों चाहते हैं। एमएसवाईएस के पास विंडोज़ पोर्ट है।

आप विंडोज आदेश पंक्ति मैं CoreUtils की सिफारिश के लिए और अधिक यूनिक्स utlities में रुचि रखते हैं।

सीखने के लिए कर देखना manual

3

मैं makefiles और डिबगिंग में विशेषज्ञ में नहीं हूँ, लेकिन मुझे पता है कि विम आप कई कार्य कर सकते हैं। उदाहरण के लिए यदि आप जीसीसी के साथ फाइल को संकलित करना चाहते हैं, तो यह सामान्य तरीके से बहुत अलग नहीं है। सामान्य मोड प्रकार में:

:!gcc file.c -o file 

वास्तव में आप "सिस्टम" को केवल "लगभग" जोड़कर उपयोग कर सकते हैं आपके आदेश के सामने। gdb भी विम

:!gdb 

साथ काम करता है मुझे आशा है कि यह आप में मदद मिलेगी।

1

जब तक आप जीएनयू-मेक स्थापित (विंडोज़ के तहत cygwin या MinGW के साथ) है, तो आप एकल फ़ाइल परियोजनाओं के लिए एक makefile लिखने की जरूरत नहीं है। विम से बस :make चलाएं, और यह पर्याप्त है।

यदि आपकी परियोजना कई फाइलों से बना है, तो आपको एक मेकफ़ाइल (या स्कोन, एएपी, (बी) जाम, चींटी, ... के लिए समकक्ष लिखना होगा), अंत में अपने &makeprg को ट्यून करें, और अंत में vim से :make पर कॉल करें। vimtips में प्रासंगिक श्रेणी देखें। आप निश्चित रूप से कंपाइलर चला सकते हैं क्योंकि आप किसी अन्य बाहरी उपकरण को चलाते थे, लेकिन आप त्रुटि की रेखा (रेखाओं) पर कूदने की संभावना खो देंगे।

एनबी: आप vim, और जीसीसी-cygwin के Win32 संस्करण उपयोग कर रहे हैं, तो आप प्राप्त त्रुटि संदेश का अनुवाद करने की आवश्यकता होगी। मैं इस उद्देश्य के लिए एक पर्ल स्क्रिप्ट बनाए रखने के लिए प्रयोग करता था, यह अब bigger suite (अभी भी बीटा चरण में) का हिस्सा है

डीबगिंग के बारे में आपके प्रश्न के बारे में, यह इस समय विंडोज़ के तहत vim से नहीं किया जा सकता है। एकमात्र डीबगर जिसे अब तक एकीकृत किया जा सकता है वह जीडीबी है, लेकिन केवल लिनक्स के तहत; pyclewn (.sf.net) परियोजना देखें।

2

devenv साथ vim एकीकृत करने के लिए, आप vim में परियोजना complie को विजुअल स्टूडियो से devenv उपयोग कर सकते हैं। आदेश इस प्रकार है:

Devenv SolutionName /build SolnConfigName [/project ProjName [/projectconfig ProjConfigName]] 

Typicatlly, devenv सी में स्थित होना चाहिए: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ IDE। इसे विम से कॉल करने योग्य बनाने के लिए इसे पर्यावरण के मार्ग पर सेट करें। हमें कमांडलाइन बिल्ड टूल डेवेन द्वारा फेंकने वाले त्रुटि संदेशों को भी पहचानने की आवश्यकता है। बस अपने vimrc में निम्नलिखित लाइनों डाल:

" Quickfix mode: command line devenv error format 
au FileType cpp set makeprg=devenv.com\ /Build\ Debug\ *[SolutionName]* 
au FileType cpp set errorformat=\ %#%f(%l)\ :\ %#%t%[A-z]%#\ %m 

तो आप उपयोग कर सकते हैं: संकलन और vim से कार्यक्रम बनाने है।

0

मैं डिबगिंग बारे में निश्चित नहीं हूँ, लेकिन मैं संकलन और वर्तमान कार्यक्रम चलाने के रूप में मैं एक छोटे से vim प्लगइन लिखा था ऐसा करने के लिए लिए एक आसान तरीका पता है।

http://pastebin.com/qc5Zp2P7

यह आप जी ++ संकलक का उपयोग कर रहे हो जाती है। यदि नहीं, तो उस नाम को उस कंपाइलर में बदलें जिसे आप उपयोग कर रहे हैं। इस फ़ाइल को whereveryouinstalledvim/ftplugin/cpp.vim

वर्तमान में खुले प्रोग्राम को संकलित और चलाने के लिए, बस गैर-संपादन मोड में Shift-e टाइप करें।