2011-01-31 17 views
16

में मैं दृश्य स्टूडियो में एक मौजूदा C++ आवेदन के स्रोत आयात करने के लिए कुछ विशिष्ट एमएस टूल का लाभ उठाने की कोशिश कर रहा हूँ। हालांकि, ऑनलाइन खोज करने और दृश्य स्टूडियो के साथ खेलने के बाद, मुझे दृश्य स्टूडियो में मौजूदा सी ++ स्रोत कोड आयात करने और इसे संरचनात्मक रूप से बरकरार रखने का एक आसान तरीका प्रतीत नहीं होता है।आयात मौजूदा सी ++ स्रोत कोड विजुअल स्टूडियो

आयात क्षमता मुझे निर्देशिकाओं से बाहर निकलती है और उन्हें सभी को एक परियोजना में डाल देती है। क्या मैं कुछ भूल रहा हूँ?

(यह सभी अप्रबंधित सी ++ है, और विशिष्ट होता है जीत/यूनिक्स के लिए बनाता है)

उत्तर

6

मुझे दी गई बाधाओं के तहत किसी भी सामान्य समाधान से अवगत नहीं है - विशेष रूप से स्रोत पेड़ से कई परियोजनाएं बनाना है।

सबसे अच्छा विकल्प मैं देख रहा हूँ वास्तव में कुछ स्क्रिप्ट के द्वारा प्रोजेक्ट फ़ाइलें पैदा कर रही है।

  • एक परियोजना मैन्युअल बनाया जा रहा है (खाली परियोजना बनाने, तो फ़ाइलों को जोड़), संभव के रूप में यह रूप में करीब
  • विन्यस्त के रूप में वांछित (यानी precompiled हेडर के साथ,, विन्यास का निर्माण आदि)
  • उपयोग प्रोजेक्ट फाइलों के लिए कंकाल के रूप में बनाया गया .vcproj

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


हमारा अनुभव: हम वास्तव में .vcproj और भंडार (Git) अब में .sln, लेकिन एक अजगर स्क्रिप्ट है कि स्रोत पेड़ से-genrates फिर उन्हें एक साथ वी.एस. 2008 के साथ एकत्र नहीं करते "संपत्ति शीट टेम्पलेट्स" (या जो भी उन्हें बुलाया जाता है)। यह सामान्य समायोजन करने में बहुत मदद करता है।

प्रोजेक्ट जनरेशन स्क्रिप्ट में सभी परियोजनाओं की विशेषताओं के बारे में जानकारी शामिल है (उदाहरण के लिए वे एमएफसी/एटीएल का उपयोग करते हैं, क्या यह डीएलएल या एक्सईई, फाइलों को बाहर करने के लिए बनाएगा)।

इसके अलावा, इस स्क्रिप्ट भी निर्भरता में शामिल है, जो वास्तविक निर्माण स्क्रिप्ट फ़ीड।

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


@Michael बर "कैसे जटिल अजगर स्क्रिप्ट और जो कुछ भी समर्थन 'टेम्पलेट्स' आप की आवश्यकता हो सकती है?"

मैं ईमानदारी से, नहीं बता सकता क्योंकि मैं एक और देव (जो अजगर उठाया) के लिए काम दे दिया। मूल कार्य एक बिल्ड स्क्रिप्ट प्रदान करना था, क्योंकि वीएस -2008 समाधान निर्माण हमारी आवश्यकताओं के लिए पर्याप्त नहीं था, और पुरानी बैच फ़ाइल समानांतरता का समर्थन नहीं करती थी। .vcproj पीढ़ी बाद में जोड़ा गया था। जैसा कि मैं समझता हूं कि उसकी स्क्रिप्ट स्क्रैच से .vcproj और .sln फ़ाइलों को उत्पन्न करती है, लेकिन अलग-अलग संपत्ति शीट से सभी सेटिंग्स में खींचती है।

सकारात्मक:

  • मक्खी पर नया विन्यास जोड़ा जा रहा है। कुछ परियोजनाओं में पहले से ही छह विन्यास थे, और यूनिकोड समर्थन के लिए योजना का मतलब था कि उन्हें थोड़ी देर के लिए दोगुना करने पर विचार करें। कुछ अजीब उपकरण अभी भी एमबीसीएस के रूप में बनाते हैं, इसलिए कुछ libs में अब 8 कॉन्फ़िगरेशन हैं। यह सुनिश्चित करना कि हाथ से दर्द होता है, अब यह मुझे अब परेशान नहीं करता है।

  • वैश्विक परिवर्तन, उदा। रिश्तेदार परियोजना रास्तों इधर-उधर जाने, अस्थायी फ़ाइलों के लिए और अंतिम binaries के लिए फ़ोल्डर जब तक हम एक समाधान

  • स्थिरता बिल्ड के साथ हम खुश थे पाया। वीसी 6 प्रोजेक्ट फाइलों को विलय करना विभिन्न कारणों से त्रुटियों का एक उल्लेखनीय स्रोत था, और वीसी 9 प्रोजेक्ट फाइलें बेहतर दिखाई नहीं दे रही थीं। अब चीजें अलग दिखती हैं: संपत्ति शीट में संकलित/लिंक सेटिंग्स, स्क्रिप्ट में फ़ाइल हैंडलिंग। साथ ही, स्क्रिप्ट में हमारे डिफ़ॉल्ट से अधिकतर भिन्नताएं सूचीबद्ध होती हैं, जो किसी प्रोजेक्ट फ़ाइल से पढ़ने के लिए आसान होती हैं।

आम तौर पर: मैं नहीं एक बड़ा लाभ बल्कि वे स्थिर रहे हैं देख पा रहे हैं जब अपनी परियोजनाओं को पहले से ही स्थापित कर रहे हैं, और आप वास्तविक मुद्दों की जरूरत नहीं है। हालांकि, अज्ञात (हमारे लिए: अधिकतर वीसी 6 -> वीसी 9 और यूनिकोड बनाता है) में जाने पर, लचीलापन ने प्रयोगों के जोखिम को बहुत कम कर दिया।

+0

यह मेरे लिए काफी दिलचस्प लगता है। पाइथन स्क्रिप्ट्स और जो भी 'टेम्पलेट्स' का समर्थन कर रहे हैं, आपको कितनी जटिल आवश्यकता हो सकती है? –

2

एक नया खाली समाधान बनाएं और उसमें अपने स्रोत कोड जोड़ें।

उदाहरण के लिए

,

फ़ाइल> नया> परियोजना ... विजुअल C++> Win32> Win32 कंसोल अनुप्रयोग आवेदन सेटिंग्स> - सही का निशान हटाएँ "precompiled शीर्ष लेख" - चेक "खाली परियोजना"

परियोजना तब बनाई गई है। मौजूदा कोड जोड़ने के लिए:

परियोजना मौजूदा आइटम ...> जोड़ें> - फ़ाइल का चयन करें (रों)

पुनः संकलित करें जोड़ने के लिए, किया है!

+0

जॉन: सैकड़ों मौजूदा सीपीपी फाइलें हैं - यही वह दृष्टिकोण है जिसे मैंने पहले ही कोशिश की है। प्रत्येक फ़ोल्डर को एक अलग lib/dll के रूप में माना जाना चाहिए (और 30+ फ़ोल्डर्स की तरह हैं) – pinvoke

+1

@ पिनवोक: एक चूसने वाले 80 के बैंड को पैराफ्रेश करने के लिए, "पोर्टिंग करना मुश्किल है।" –

1

"समाधान एक्सप्लोरर" में आप "सभी फाइलें दिखाएं" बटन पर क्लिक कर सकते हैं ताकि विजुअल स्टूडियो फाइल सिस्टम (निर्देशिकाओं और सभी) पर मौजूद फाइलों को प्रदर्शित कर सके।

मेरी राय में यह एक अपूर्ण कामकाज है, लेकिन मेरा मानना ​​है कि यह सबसे अच्छा उपलब्ध है। मुझे प्लग-इन, मैक्रो या अन्य टूल से अनजान है जो एक वास्तविक प्रोजेक्ट में एक निर्देशिका को फाइल सिस्टम के दर्पण के साथ आयात करेगा।

1

मैं जानता हूँ कि इस सवाल का पहले से ही सही चिह्नित है, लेकिन मैं "फाइल" करके विजुअल स्टूडियो 2008 के साथ एक परियोजना में मौजूदा कोड आयात करने में सक्षम था -> "नया प्रोजेक्ट मौजूदा कोड से"। मेरे कोड की निर्देशिका संरचना को बनाए रखा गया था।

+1

"मेरे कोड की निर्देशिका संरचना को बनाए रखा गया था।" मैंने कोशिश की, मेरी सभी फाइलें "स्रोत फ़ाइलें" फ़िल्टर के तहत "फ्लैटली" सूचीबद्ध थीं। – wil

+1

थोड़ी देर के लिए प्रयास करने के बाद मैं स्रोत पेड़ को स्वचालित रूप से आयात करने के विचार को छोड़ने वाला था। मुझे वही मिला, फाइलें "स्रोत फ़ाइलें" के नीचे सपाट थीं लेकिन फिर आप "सभी फाइलें दिखाएं" बटन दबाएं और वे फ़ाइल सिस्टम में उसी वृक्ष संरचना पर स्विच करें, अगर आप उस बटन को दोबारा दबाते हैं तो वे वापस जाते हैं फ्लैट संरचना। – martinako

12

कोई परियोजना/समाधान के साथ, लोड विजुअल स्टूडियो 2005 मैं इस मेनू आइटम देखने में:

फ़ाइल> मौजूदा कोड से नया प्रोजेक्ट ...

जादूगर पालन करने के बाद, मेरी समस्या हल कर रहा है!

स्विचिंग "दिखाएँ सभी फ़ाइलें" बटन में सभी निर्देशिकाओं और फ़ाइलों के साथ पूरा पदानुक्रम को दर्शाता है।

तो नया प्रोजेक्ट मौजूदा कोड से ... विकल्प उपलब्ध नहीं है, तो आप> उपकरण में जोड़ने के लिए अनुकूलित आवश्यकता होगी ...

Tools > Customize... Commands tab, File menu, Add Command button, File menu, New Project From Existing Code...

+0

यह काम नहीं करता है। विजुअल स्टूडियो बस "हेडर फाइल" फ़ोल्डर में सभी .h फ़ाइलों को डंप करता है और सभी .cpp फ़ाइलों को "स्रोत फ़ाइलें" फ़ोल्डर में डंप करता है। यह फ़ोल्डर पदानुक्रम को बिल्कुल सुरक्षित नहीं करता है। – android927

1

तुम हमेशा परियोजना मेनू

से देखने स्विच कर सकते हैं उदाहरण के लिए। परियोजना> सभी फ़ाइलें दिखाएँ

ऊपर unformated कच्चे फाइल सिस्टम आदेश

पुराने संस्करणों के बारे में सुनिश्चित नहीं में फ़ाइलों को प्रदर्शित करेगा, लेकिन यह VS 2010

0

मैं तुम्हें समझ में, मैं एक ही समस्या है पर काम करता है : कई फ़ोल्डर और उपफोल्डर में व्यवस्थित कई .cpp और .h फ़ाइलें इस फ़ोल्डर संरचना के लिए लिखे गए पथ शामिल हैं। स्रोत फ़ाइलों के साथ इस फ़ोल्डर संरचना को आयात करने के लिए आप एकमात्र तरीका कर सकते हैं "सभी फ़ाइलें दिखाएं" का उपयोग करना और फिर फ़ोल्डर पर राइट-क्लिक करें और "प्रोजेक्ट में आयात करें" का चयन करें। जब मैं सी-शार्प परियोजनाओं का उपयोग कर रहा हूं तो यह मेरे लिए काम करता है। लेकिन यह मेरे सी ++ परियोजनाओं के लिए काम नहीं करता है। मैं अभी भी एक समाधान की तलाश कर रहा हूं ...

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