2010-07-21 10 views
11

हमारे पास बहुत जटिल नहीं है लेकिन बड़ा (यानी बहुत सारी फाइलें) विजुअल स्टूडियो सी ++ विन 32 कंसोल वीएस -2010 में सी ++ 0x मानक में लिखा गया है। यह किसी भी गैर मानक कोड या कुछ भी नहीं (उम्मीद है!) का उपयोग नहीं करता है।पोर्ट विजुअल स्टूडियो सी ++ लिनक्स

अब मैं इसे लिनक्स में बंद करना चाहता हूं। ऐसा करने का सबसे तेज़ तरीका कौन सा तरीका है? autoconf? पुरानी शैली वाली फाइल बनाते हैं? कोई अन्य समाधान?

+0

क्या मुझे कुछ याद आया? सी ++ 0 एक्स एक * प्रस्तावित * मानक है जो मैंने सुना है और इसका मतलब है कि आपका कोड ** ** गैर मानक है यदि यह उसमें से सुविधाओं का उपयोग करके लिखा गया है। –

+0

वास्तव में सी ++ 0x सी ++ प्रोग्रामिंग भाषा के लिए नियोजित नए मानक का अनौपचारिक नाम है। – MBZ

+0

* नियोजित * बनाम * प्रस्तावित * अनुमोदन की स्थिति में किसी भी अंतर को इंगित करता है? मैं ** कुछ ** तक मानक लिखने से सावधान हूं। –

उत्तर

7

मैं नियमित रूप से उपयोग करता हूं लेकिन जितना संभव हो सके डिफ़ॉल्ट नियमों के साथ इसे सरल रखता हूं। निर्भरता में जोड़ें जैसे आप साथ जाते हैं।

संपादित करें: अंतरिम चरण में, इसे मिंगव के साथ बनाएं ताकि आप पूरे एपीआई पोर्टिंग समस्या से बच सकें जब तक कि आप अपने नए निर्माण तंत्र में काम नहीं कर लेते।

अपने कंसोल एप्लिकेशन Win32 एपीआई कार्यों तो आप सभी स्रोत जहां यह प्रयोग किया जाता है को संशोधित करने या एक मॉड्यूल है कि उन कार्यों को लागू करता है लेखन के बीच एक विकल्प है कॉल करता है।

इस प्रकार के पूर्व पोर्टिंग प्रयासों में मैंने इसे दोनों तरीकों से आजमाया और बाद वाला आसान था। मैंने केवल 18 से 20 शिम कार्यों को लिखना समाप्त कर दिया।

यह सफल रहा कि मैंने एक ओएस एब्स्ट्रक्शन लेयर लिखना समाप्त कर दिया जो कि कई परियोजनाओं पर इस्तेमाल किया गया था जो मुझे विंडोज मूल, सिग्विन, लिनक्स, वीएक्सवर्क्स इत्यादि पर संकलित करने देता है, जिसमें एक या दो फाइलों में मामूली परिवर्तन होते हैं।

(ps सी ++ आधारित ओएस एब्स्ट्रक्शन लेयर के ओपन सोर्स वर्जन में कोई दिलचस्पी है? मैं पर्याप्त रुचि होने पर दुनिया के एक अनगिनत संस्करण को जारी करने की सोच रहा था। यह अधिक उपयोगी है जहां बूस्ट बहुत भारी है - यानी एम्बेडेड परियोजनाएं।)

2

आप विजुअल स्टूडियो से एक मेक फ़ाइल निर्यात कर सकते हैं।

अद्यतन: असल में आप कर सकते हैं अब और नहीं, जब तक आप VC6 चारों ओर झूठ बोल रही है

है
+0

धन्यवाद। कोई ट्यूटोरियल, लिंक, कुंजी शब्द? – MBZ

+0

अपडेट किया गया क्योंकि मैं गलत था। –

+2

मैं वीएस या सी ++ के बारे में डर नहीं देता, लेकिन आकर्षक अवतार के लिए +1;) –

3

अधिकांश शायद आप autoconf की जरूरत नहीं है (और मैं तुम्हें यह स्पर्श नहीं करते, unless you love pain सुझाव है), क्योंकि आप कर रहे हैं एक दर्जन यूनिक्स स्वाद के लिए पोर्टेबल होने की कोशिश नहीं कर रहा है।

  1. रोल अपने Makefiles मैन्युअल। यदि आपके पास साझा नियमों का एक सेट है और न्यूनतम मेकफ़ाइल है तो यह बहुत मुश्किल नहीं होना चाहिए जो केवल स्रोत फ़ाइलों और संकलन विकल्पों को निर्दिष्ट करता है।
  2. जीसीसी 4.5 का उपयोग it supports more C++0x features के रूप में करें।
1

Stay Away से ऑटो * और कॉन्फ़िगर। ये भयानक IMHO हैं।

आप किसी भी तरह एक वी.एस. 8 या 9 vcproj/SLN प्राप्त कर सकते हैं, तो आप this उपयोग कर सकते हैं। मैंने इसका इस्तेमाल नहीं किया है, इसलिए मैं कोई सलाह नहीं दे सकता।

आप मैन्युअल रूपांतरण तक ले रहे हैं, मैं भी बड़ी परियोजनाओं के लिए CMake की तरह कुछ सुझाव है, के रूप में यह काफी तेजी से तैयार हो जाओ करने के लिए बहुत आसान है,।

परियोजना एक साधारण लेआउट है, तो आपको सफलता इस तरह क्यूटी 4 की qmake का उपयोग कर हो सकता है: जो कई प्लेटफार्मों पर एक makefile में बदला जा सकता

qmake -project 

यह होगा उत्पादन एक qmake .pro फ़ाइल, (qmake का उपयोग कर)। यह ठीक काम करना चाहिए, लेकिन पूरी तरह से नहीं। वैकल्पिक रूप से, आप वीएस के लिए क्यूटी प्लगइन स्थापित कर सकते हैं, और इसे मौजूदा वीएस प्रोजेक्ट से प्रो फाइल जेनरेट कर सकते हैं। यह आपकी बिल्ड सिस्टम Qt4 के qmake पर निर्भर करेगा, जो शायद आप जो चाहते हैं वह नहीं है।

निश्चित रूप से सेमेक जैसी अन्य चीजें हैं, लेकिन उन्हें सभी को मैन्युअल हस्तक्षेप की आवश्यकता होगी।

1

ऐसा करने का सबसे तेज़ तरीका?

g++ *.cpp -o myapp 

गंभीरता से, अपनी आवश्यकताओं पर निर्भर करता है, यहां तक ​​कि एक makefile पैदा overkill हो सकता है। यदि आप बस एक त्वरित और गंदे में रुचि रखते हैं "चलो देखते हैं कि हम लिनक्स पर एक कामकाजी कार्यक्रम प्राप्त कर सकते हैं", बस अपनी कोड फ़ाइलों को g ++ पर फेंक दें और देखें कि क्या होता है।

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