के लिए अग्रिम धन्यवाद आप एक छोटे से कैसे दृश्य स्टूडियो सी ++ फाइलों के साथ काम करता है के बारे में उलझन हो, लेकिन है कि, ठीक है के बाद से प्रलेखन घटिया है। पहली चीजें पहले: सी # या जावा के विपरीत, परियोजना में फ़ाइलों की व्यवस्था आपकी डिस्क पर फ़ाइलों की व्यवस्था से कोई संबंध नहीं है। फ़ाइलें और फ़ोल्डर्स परियोजना में "अंदर" नहीं हैं; प्रोजेक्ट केवल फाइलों और फ़ोल्डर्स के नाम और पथ सूचीबद्ध करता है, जो आपकी डिस्क पर पहले से मौजूद हैं।
सामान्य रूप से, आप उन फ़ोल्डरों के अंदर स्रोत फ़ाइलों के साथ फ़ोल्डर का लेआउट बनाते हैं। आप विजुअल स्टूडियो के के बाहर यह करते हैं। आप एक प्रोजेक्ट फ़ाइल भी बनाते हैं। जब आप प्रोजेक्ट में "फ़ाइल जोड़ें" करते हैं, तो आप डिस्क पर फ़ाइल को कहां ढूंढने के लिए प्रोजेक्ट को बताते हैं।
चलिए एक विशिष्ट उदाहरण के साथ काम करते हैं और मैं आपको दिखाऊंगा कि मैं इसे कैसे व्यवस्थित करूंगा। मान लीजिए कि आप सुपरकैल्क नामक ग्राफिंग कैलकुलेटर प्रोग्राम बना रहे हैं। आपके पास एक स्रोत फ़ोल्डर होगा, और उसके बाद अलग-अलग फ़ाइलों को रखने के लिए स्रोत के अंदर फ़ोल्डर्स बनाएं। मान लीजिए फ़ोल्डरों आपके द्वारा बनाए गए हैं: Input
, Output
, और Math
:
SuperCalc\Source\Input
SuperCalc\Source\Math
SuperCalc\Source\Math\Matrix
SuperCalc\Source\Output
आप Source
के 3 उपनिर्देशिका है। Math
उपनिर्देशिका में एक उपनिर्देशिका है जिसे Matrix
कहा जाता है। आपके पास इनपुट, मैथ, मैट्रिक्स और आउटपुट में .cpp फ़ाइलें होंगी। आप विंडोज एक्सप्लोरर या कमांड प्रॉम्प्ट का उपयोग करके इन निर्देशिकाओं (फ़ोल्डरों) को बनाएंगे।
अब आप एक समाधान फ़ाइल (SuperCalc.sln
) और एक प्रोजेक्ट फ़ाइल (SuperCalc.vcxproj
& SuperCalc.vcxproj.filters
) भी बनाना चाहेंगे। विजुअल स्टूडियो के अंदर ऐसा करो। आमतौर पर प्रोजेक्ट फ़ाइल समाधान निर्देशिका के उप-फ़ोल्डर में रहता है; यह विजुअल स्टूडियो द्वारा स्वचालित रूप से आपके लिए किया जाएगा। समाधान फ़ाइल के लिए एक स्थान चुनें - यह स्रोत कोड के रूप में एक ही निर्देशिका संरचना (फ़ोल्डर पेड़) में कहीं होना चाहिए। मैं इसे, स्रोत निर्देशिका के बगल में डालने में सुझाव है:
वी.एस. में जाकर File > New > Project > Visual Studio Solutions > Blank Solution File
लेने।समाधान को एक नाम दें (शायद "सुपरकैल्क") और एक स्थान (वह स्थान जिसे हमने अभी SuperCalc\Build
निर्देशिका में चुना है)। यह आपके लिए समाधान फ़ाइल तैयार करेगा।
अब समाधान एक्सप्लोरर ("समाधान सुपरकैल्क, 0 प्रोजेक्ट्स") में समाधान पर राइट-क्लिक करें, और Add > New Project
चुनें। एक नाम चुनें - यह आपके प्रोग्राम का नाम निष्पादन योग्य होगा, जैसे "सुपरकैल्क"! Win32, या तो Win32 कंसोल एप्लिकेशन (यह एक डॉस-कंसोल प्रोग्राम है) या Win32 प्रोजेक्ट (यह एक सामान्य विंडोज जीयूआई प्रोग्राम है) चुनें। आमतौर पर मैं कुछ महत्वपूर्ण परिवर्तन करने के लिए एप्लिकेशन सेटिंग्स पर क्लिक करता हूं: एक बात के लिए, मैं खाली प्रोजेक्ट चुनता हूं क्योंकि मैं नहीं चाहता कि विजुअल स्टूडियो मेरे लिए फाइलें और कोड बनाये, जब तक कि मैं इसे न कहूं। जब मैं इसे जिस तरह से स्थापित करता हूं, तो मैं फिनिश पर क्लिक करता हूं।
अब आपको विजुअल स्टूडियो द्वारा बनाई गई आपकी समाधान फ़ाइल और प्रोजेक्ट मिल गया है। आपके पास अपना स्रोत कोड भी है, या कम से कम निर्देशिका संरचना (फ़ोल्डर पेड़) जहां आपका स्रोत कोड, विजुअल स्टूडियो के बाहर बनाया जाएगा। अब दोनों चीजों को एक साथ जोड़ने का समय है।
यदि आप चाहते थे, तो आप अपनी सभी स्रोत फ़ाइलों को अपनी परियोजना के स्रोत फ़ाइलें फ़िल्टर में सूचीबद्ध कर सकते हैं। भले ही वे विभिन्न निर्देशिकाओं (इनपुट, मैट्रिक्स इत्यादि) से आएंगे, डिस्क पर फ़ाइलों के स्थान और परियोजना में उनकी उपस्थिति के बीच कोई आवश्यक संबंध नहीं है। लेकिन अगर आपके पास बहुत सारी फाइलें हैं, तो यह आसान है अगर आप "उप-फ़िल्टर" बनाते हैं, स्रोत फाइल फ़िल्टर के अंदर फ़िल्टर करते हैं, और उन्हें स्रोत के उप-फ़ोल्डर के नाम देते हैं। इस तरह, आप अपनी प्रोजेक्ट फ़ाइल के अंदर अपनी डिस्क निर्देशिकाओं की संरचना को दोहराते हैं।
"सुपरकैल्क" प्रोजेक्ट के स्रोत फ़ाइलें फ़िल्टर पर राइट-क्लिक करें, और जोड़ें> नया फ़िल्टर जोड़ें चुनें। इसे Input
नाम दें (सुपरकैल्क \ स्रोत निर्देशिकाओं में से पहला)। फ़िल्टर Math
और Output
भी बनाएं। Math
फ़िल्टर पर राइट-क्लिक करें और Matrix
(गणित के अंदर) नामक उप-फ़िल्टर बनाने के लिए जोड़ें> नया फ़िल्टर जोड़ें चुनें।
SuperCalc
Source Files
Input
Math
Matrix
Output
जो निर्देशिका (फ़ोल्डर) समानताएं आपको पहले बनाए गए: अब आप इन फिल्टर है। यह मनुष्यों के लिए पूरी तरह से सुविधाजनक व्यवस्था है। विजुअल स्टूडियो इसके बारे में कुछ खास नहीं समझता है। यदि आप बस "फ़ाइल जोड़ें" के लिए वीएस को बताते हैं तो यह फ़ाइल को सही फ़िल्टर में नहीं रखेगा। आपको यह कहना होगा कि इसे कहां रखा जाए।
अपनी .cpp फ़ाइलों को जोड़ने या बनाने के लिए, निर्देशिका के अनुरूप फ़िल्टर नाम का चयन करें जहां .cpp फ़ाइल है। इसलिए, SuperCalc\Source\Math\Matrix\matrix_multiply.cpp
फ़ाइल जोड़ने या बनाने के लिए, समाधान एक्सप्लोरर में Matrix
फ़िल्टर पर राइट-क्लिक करें, और जोड़ें> नई फ़ाइल जोड़ें या मौजूदा फ़ाइल जोड़ें चुनें। (मौजूदा फ़ाइल जोड़ें जब आप पहले से ही matrix_multiply.cpp लिखा है और आप बस उस परियोजना को बताना चाहते हैं जहां यह है।) Source\Math\Matrix
निर्देशिका पर नेविगेट करने के लिए संवाद बॉक्स का उपयोग करें। अपने पूरे कार्यक्रम में सभी स्रोत फ़ाइलों के लिए इस प्रक्रिया को दोहराएं।
आपके पास यह सवाल भी था "क्या $ (CURDIR) जैसा कुछ है जिसका उपयोग मैं स्रोत पथ फ़ोल्डर को पूर्ण पथ की आवश्यकता के बिना शामिल करने के लिए उपयोग कर सकता हूं?" आप भाग्य में हैं: विजुअल स्टूडियो परियोजनाएं पूर्ण पथ का उपयोग नहीं करती हैं! वे सापेक्ष पथ का उपयोग करते हैं। प्रोजेक्ट फ़ाइल स्रोत फ़ाइल वाले निर्देशिका में .vcxproj फ़ाइल वाली निर्देशिका से प्राप्त करने के लिए आवश्यक सापेक्ष पथ संग्रहीत करती है। इसलिए यदि आपने SuperCalc.sln
और SuperCalc.vcxproj
बनाया है जहां मैंने सुझाव दिया है (SuperCalc\Build
निर्देशिका), और आप स्रोत उपनिर्देशिका में अपनी .cpp फ़ाइलों को जोड़ते हैं, तो आप SuperCalc के अंदर देख सकते हैं।vcxproj फ़ाइल नोटपैड का उपयोग कर, और आप लाइनों की तरह दिखाई देंगे:
<ClCompile Include="..\..\..\Source\Math\Matrix\matrix_multiply.cpp" />
चूंकि कोई निरपेक्ष रास्ते हैं, तो आप पूरे Supercalc निर्देशिका वृक्ष लेने के लिए और इसे कहीं और चला जाता, और यह सब अभी भी काम करेगा। $ (CURDIR) जैसे पर्यावरण चर हैक की आवश्यकता नहीं है।
पता करने के लिए एक अंतिम बात: चूंकि आप अपनी स्रोत फ़ाइलों को कई निर्देशिकाओं में डाल रहे हैं, तो आपको #include
आईएनजी हेडर, .h या .hpp फ़ाइलों के साथ समस्या हो सकती है। आपको संकलक को उन निर्देशिकाओं को बताना होगा जहां आपकी शीर्षलेख फ़ाइलें स्थित हैं। वे शायद कई निर्देशिकाओं के बीच बिखरे हुए होंगे। तो प्रोजेक्ट सेटिंग्स को संपादित करें: समाधान एक्सप्लोरर में प्रोजेक्ट नाम पर राइट-क्लिक करें, गुण चुनें, और कॉन्फ़िगरेशन गुण> सी/सी ++> सामान्य पर ड्रिल करें। संपत्ति पत्रक में पहला क्षेत्र "अतिरिक्त शामिल निर्देशिकाएं" कहता है। इससे पहले कि आप कुछ और करें, कॉन्फ़िगरेशन ड्रॉप-डाउन मेनू पर क्लिक करें और सभी कॉन्फ़िगरेशन चुनें। यदि आपके पास 32-बिट और 64-बिट दोनों बिल्ड हैं, तो प्लेटफ़ॉर्म ड्रॉप-डाउन मेनू पर क्लिक करें और सभी प्लेटफ़ॉर्म चुनें। अब "अतिरिक्त शामिल निर्देशिकाएं" पर जाएं और प्रोजेक्ट फ़ाइल की निर्देशिका से संबंधित पथों के साथ सभी स्रोत निर्देशिकाओं में सभी पथ जोड़ें।
..\..\..\Source\Input;..\..\..\Source\Math;..\..\..\Source\Math\Matrix;..\..\..\Source\Output
इस परिवर्तन किया जाता है, स्रोत \ गणित \ मैट्रिक्स \ matrix_multiply.cpp की तरह एक फ़ाइल एक लाइन
#include "input_configuration.hpp"
# करने के लिए हो सकता है: Supercalc उदाहरण के लिए इसलिए, यह कैसा दिखेगा इनपुट निर्देशिका से एक फ़ाइल शामिल करें, और यह सब बस काम करेगा।
(यह नहीं सभी बस काम करता है, हमेशा की तरह दृष्टिकोण अपने अतिरिक्त शामिल निर्देशिकाएँ के सामने ..\
दृश्यों की संख्या के साथ प्रोजेक्ट गुण और बेला में वापस जाने के लिए है। याद रखें कि हर बार जब आप बनाने के लिए जाना एक परिवर्तन आप का चयन करना होगा सभी विन्यास फिर से -।। अन्यथा अपने परिवर्तनों को केवल वर्तमान विन्यास के लिए लागू होगी (डीबग या रिलीज) वह रूपरेखा नहीं चिपचिपा है)
लिखने के लिए मदद करता है, तो आप उपयोगकर्ता मैक्रो जैसे परिभाषित कर सकते हैं। एक संपत्ति शीट (.props) के माध्यम से $ (स्रोत)। मैं संपत्ति शीट्स में जितनी संभव हो उतनी परियोजना सेटिंग्स बनाने की सलाह देता हूं क्योंकि कई परियोजनाएं सेटिंग्स साझा कर सकती हैं। –
अच्छा जवाब। मैं फ़िल्टर बनाता हूं जो मेरी निर्देशिका संरचना से मेल खाता है, लेकिन मैं एक आवर्ती सिरदर्द में चला जाता हूं, जिसे आपने थोड़ा सा स्पर्श किया था। वीएस को कोई जानकारी नहीं है कि मेरे फ़िल्टर निर्देशिका से जुड़े हुए हैं। जब मैं अनुक्रम में कोड जोड़ता हूं तो यह दर्द होता है: foo.h, foo.c, bar.h, bar.c. मुझे निर्देशिका को सही जगह पर बदलने के लिए याद रखना होगा। वीसी ++ आपकी आखिरी निर्देशिका याद करता है, इसलिए यह हमेशा एक कदम पीछे रहता है। मैंने एमएस को फ़िल्टर के साथ संबद्ध निर्देशिकाओं को अनुमति देने के लिए एक सुझाव पोस्ट किया। यह यहां पर है। अगर आपको यह बग भी है तो कृपया उस सुझाव को ऊपर उठाएं। http://tinyurl.com/bud4zsv –
मीठे! 2015 समुदाय में, एक खाली समाधान नया> प्रोजेक्ट ...> अन्य प्रोजेक्ट प्रकार> विजुअल स्टूडियो समाधान> रिक्त समाधान –