मेरे पास एक बड़े पैमाने पर सी ++ प्रोजेक्ट है, जिसमें एकाधिक फ़ोल्डर्स (फाइल सिस्टम पर) में व्यवस्थित स्रोत-फाइलें हैं।विजुअलस्टूडियो प्रोजेक्ट एक ही नाम के एकाधिक स्रोत फाइलों के साथ?
इन फ़ोल्डरों में से दो में, मेरे पास एक ही नाम वाली फ़ाइलें हैं। उदा।
\MyProject\foo\Blurp.cpp
\MyProject\foo\File.cpp
\MyProject\bar\File.cpp
\MyProject\bar\Knoll.cpp
परियोजना पार मंच है, और मैं Linux और OSX पर autoconf उपयोग करें, लेकिन (कुछ 3 पार्टी सी ++ पुस्तकालयों मैं compilers भर W32 और सी पर उपयोग ++ द्विआधारी इंटरफ़ेस असंगति के कारण) W32 पर MSVC का उपयोग करना
एमएसवीसी पक्ष पर, परियोजना को कई "फ़िल्टर" (उन वर्चुअल फ़ोल्डर्स) में भी व्यवस्थित किया गया है (साथ ही फाइलों में डायरेक्ट्रीज के साथ संबंधित नामों के साथ), इसलिए मैं उन्हें अलग कर सकता हूं।
अब समस्या है, जब मैं इस परियोजना का निर्माण, MSVC वस्तु फ़ाइलों एक भी फ्लैट diretory में डालता है, और मैं अंत:
\MyProject\Release\Blurp.obj
\MyProject\Release\File.obj
\MyProject\Release\Knoll.obj
के रूप में देखा जा सकता है, वहाँ केवल एक ही File.obj
है, तो एक बाइनरी ऑब्जेक्ट गुम है। जाहिर है, लिंकर शिकायत करता है, क्योंकि यह उस लापता ऑब्जेक्ट फ़ाइल में परिभाषित कक्षाओं/कार्यों/... को नहीं ढूंढ सकता है।
एमएसवीसी को उन फ़ाइलों को निर्देशिका (या फ़िल्टर) के आधार पर एक अद्वितीय नाम के साथ ऑब्जेक्ट फ़ाइलों को बनाने के लिए कहने का कोई तरीका है?
\MyProject\Release\foo\Blurp.obj
\MyProject\Release\foo\File.obj
\MyProject\Release\bar\File.obj
\MyProject\Release\bar\Knoll.obj
या
\MyProject\Release\foo-Blurp.obj
...
या जो कुछ भी:
मैं की तरह कुछ कल्पना। मुझे पता है कि अन्य सभी बिल्ड-सिस्टम (सीएमके, ऑटोोटूल) एक ही नाम की कई फाइलों से निपटने में सक्षम हैं।
यह प्रश्न 3729515 के समान है, लेकिन मैं वर्तमान में VS2008 पर अटक गया हूं। (- प्रश्न में प्रत्येक फ़ाइल के लिए वस्तु निर्देशिका स्थापित करने के लिए - समाधान VS2008 के लिए वहाँ का सुझाव दिया जो कुछ वास्तव में सैद्धांतिक रूप से काम करता है, लेकिन जो मैं व्यावहारिक कारणों के लिए से बचने के लिए चाहते हैं)
इनपुट के लिए धन्यवाद; $ (इनपुटडियर) \ $ (IntDir) \ आशाजनक लग रहा है, और/लेकिन मैं वास्तव में यह चाहता हूं कि एक प्रोजेक्ट सेटिंग (कारण बताए गए कारणों से), अधिमानतः यहां तक कि एक संपत्तिपत्र में भी, इसलिए परिवर्तन स्पष्ट हो जाता है। मैं अपने स्रोत पेड़ को छेड़छाड़ करने वाली ओबीजे-फाइलों के बारे में बहुत चिंतित नहीं हूं (भले ही कुल मिलाकर कुछ सैकड़ों ओबीजे-फाइलें उत्पन्न हों) –
ठीक है, यह समाधान मेरे लिए काम नहीं करता है। मुझे "पथ ब्ला ब्ला ब्लै" नहीं मिल रहा है "के बारे में कुछ गलती हुई। तो, मैं एक और समाधान के साथ आया: मैंने अपने समाधान से "fileWithSameName.cpp" को बाहर रखा, और एक और जोड़ा, "AnotherFile.cpp" जो अंदर है केवल एकमात्र पंक्ति है: ["fileWithSameName.cpp" शामिल करें]। यह मेरे लिए काम करता है – Illidan
यह वीएस 2015 में मेरे लिए काम नहीं करता है। लेकिन थोड़ा अलग संपत्ति मूल्य https://stackoverflow.com/questions/3695174/visual-studio-2010s-strange-warning-lnk4042/3731643# पर सुझाया गया है 3731643 काम करता है: $ (IntDir) /% (सापेक्ष डीआईआर)/ – peastman