मुझे विजुअल स्टूडियो 2008 का उपयोग करके बनाया गया एक बहुत बड़ा एप्लीकेशन मिला है जिसे विंडोज एक्सपी पर चलाने के लिए डिज़ाइन किया गया है। कोड में एक समाधान फ़ाइल होती है जिसमें छह अलग-अलग परियोजनाएं होती हैं। मेरा काम इस एप्लिकेशन को लिनक्स पर चलाने के लिए पोर्ट करना है। मैंने ऐसा पहले कभी कुछ नहीं किया।विजुअल स्टूडियो में समाधान-वाइड परिभाषित करता है?
मैंने कल खोज की कि मेरी कंपनी इस कोड के लिए विंडोज़ पर संकलन करने के लिए चाहती है जब भी मैं इसके साथ काम करूँ। मैं संकलक जो इस तरह के पूर्वप्रक्रमक ब्लॉकों का उपयोग हेडर में शामिल करने के लिए फ़ाइलों को बता सकते हैं,
#define COMPILE_FOR_LINUX
तब:
#ifdef COMPILE_FOR_LINUX
// include required Linux headers here and skip Windows header includes
#else
// include required Windows headers here and skip Linux header includes
#endif
के बाद यह पूरा करने के लिए मेरा पहला विचार जैसे एक पूर्वप्रक्रमक कथन का उपयोग करने के लिए है उचित फ़ाइलों सहित, मैं इस तरह के ब्लॉक के साथ सभी मंच निर्भर कोड संपुटित सकता है:
#ifdef COMPILE_FOR_LINUX
// compile Linux specific code used here.
#else
// compile Windows specific code used here.
#endif
आदेश में ग किसी के लिए संभव के रूप में यह रूप में आसान बनाने के लिए अपने पसंदीदा प्लेटफ़ॉर्म के लिए एप्लिकेशन को ओम्प्ले करें, मैं केवल एक ही स्थान पर निर्दिष्ट COMPILE_FOR_LINUX रखना चाहता हूं। हालांकि, मुझे यकीन नहीं है कि इसे कैसे पूरा किया जाए।
एक विचार जो मैंने खाली हेडर फ़ाइल बनाने के लिए किया था, और उसके बाद समाधान में प्रत्येक फ़ाइल में विजुअल स्टूडियो समाधान फ़ाइल में निर्दिष्ट इस हेडर फ़ाइल में पथ शामिल है। लिनक्स के लिए, मेरे पास हेडर फ़ाइल का एक और संस्करण होगा जो COMPILE_FOR_LINUX को परिभाषित करता है, और फिर रिक्त स्थान के बजाय इस संस्करण में मेकफ़ाइल बिंदु है। हालांकि, मुझे यकीन है कि यह एक बहुत ही कच्चा समाधान है, और मुझे यकीन नहीं है कि यह भी काम करेगा।
क्या कोई वैश्विक स्तर पर कुछ परिभाषित करने या एक चर बनाने के लिए एक और अधिक सुरुचिपूर्ण विधि सुझा सकता है जिससे समाधान में प्रत्येक फ़ाइल इसे देख सके?
बस अगर अन्य लोग इसे ढूंढ रहे हैं तो: http://stackoverflow.com/questions/5268177/is-there-anyway-to-define-constant-on-a-solution-basis –