2010-02-17 13 views
6

में वीसी ++ निर्देशिकाओं को ओवरराइड करने के लिए .vsprops फ़ाइल का उपयोग कैसे करें I संकलक और लाइब्रेरी पथों के लिए विजुअल स्टूडियो (devenv.exe) द्वारा उपयोग की जाने वाली निर्देशिकाओं को ओवरराइड करना चाहते हैं। मुझे पता है कि उपकरण-> विकल्प-> वीसी ++ निर्देशिकाओं के माध्यम से इसे अंतःक्रियात्मक तरीके से कैसे करें, लेकिन मैं इसे स्वचालित करना चाहता हूं।एमएस विजुअल स्टूडियो

http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx इस पर एक tantalizing नोट है: "यदि आप निर्देशिका खोज पथ (अपनी परियोजनाओं के लिए) सेट अप करना चाहते हैं जिसे अन्य उपयोगकर्ताओं द्वारा साझा किया जा सकता है या इसे कई कंप्यूटरों पर लागू किया जा सकता है, तो दृश्य सी ++ उपयोग करने का विकल्प प्रदान करता है प्रोजेक्ट प्रॉपर्टी शीट्स के माध्यम से यह संवाद। अधिक जानकारी के लिए, संपत्ति पत्रक (सी ++) देखें। "

यदि आप प्रॉपर्टी शीट्स दस्तावेज़ के लिंक का पालन करते हैं, तो तंत्र पर जानकारी का एक गुच्छा है लेकिन वास्तविक गुणों पर कोई भी सेट करने की आवश्यकता नहीं है।

मुझे% स्थानीय ऐपडेटा% \ Microsoft \ VisualStudio \ 8.0 \ VCComponents.dat (वीएस 2005 के लिए, और वीएस 2008 के लिए 9.0) में वीसी ++ निर्देशिका संवाद द्वारा पॉप की गई जानकारी मिली; ऐसा लगता है कि वीसी \ VC_OBJECTS_PLATFORM_INFO \ win32 \ निर्देशिकाओं और ... \ x64 \ निर्देशिकाओं के तहत विभिन्न गुण सेट किए गए हैं।

क्या किसी ने पहले यह किया है और यह पता है कि मैकिंग VCComponents.dat में उपयोग किए जाने वाले संपत्ति नामों से है .ssprops फ़ाइल में उपयोग करने के लिए नाम?

मैं इसे VS2005, VS2008 और VS2010 में आदर्श रूप से काम करना चाहता हूं।

वीएस -2010 में, माइक्रोसॉफ्ट ने व्यू विकल्प के तहत वीसी ++ निर्देशिका संवाद को पूरी तरह से हटा दिया है, इसे प्रति परियोजना बना दिया है, और इसलिए अब आप व्यू ऑप्शंस के बजाय प्रोजेक्ट प्रॉपर्टीज में इन निर्देशिकाओं को संपादित करने के लिए एक इंटरैक्टिव यूआई प्राप्त करते हैं; इसका मतलब यह भी है कि गुण प्रबंधक में इसके लिए एक यूआई है; तो यदि आप प्रति-प्रोजेक्ट की बजाय प्रति-मशीन में परिवर्तन करना चाहते हैं, तो आप जिस तरह से चाहते हैं, उसी तरह एक प्रॉपर्टी शीट सेट करें, और अपनी सभी परियोजनाओं को इससे प्राप्त करें। यह पुराने तरीके से बड़े सुधार की तरह लगता है। और जो मैं करना चाहता हूं उसे करने का एक सीधा तरीका। लेकिन केवल वीएस -2010 में।

वीएस2005 और वीएस 2008 में इन गुणों को प्रोजेक्ट या प्रॉपर्टी शीट में सेट करने के लिए यूआई नहीं है; मुझे हाथ से ऐसा करने में खुशी है लेकिन मुझे नहीं पता कि यह कैसा दिखना चाहिए!

यहाँ एक खाली वी.एस. 2005 .vsprops फ़ाइल है:

<?xml version="1.0"?> 
<VisualStudioPropertySheet 
    ProjectType="Visual C++" 
    Version="8.00" 
    Name="pathSettings" 
    > 
</VisualStudioPropertySheet> 

मैं VS 2010 स्थापित किया है और खोज निर्देशिका में परिवर्तन करने के लिए अपनी साफ नई जीयूआई इस्तेमाल किया; यह इस तरह दिखता है:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ImportGroup Label="PropertySheets" /> 
    <PropertyGroup> 
    <ExecutablePath>C:\Test;$(PATH)</ExecutablePath> 
    </PropertyGroup> 
</Project> 

हालांकि, कि VS2005 में शब्दशः काम नहीं करता है - VS2005 इसे लोड (शिकायत नहीं DTD/स्कीमा घोषणा मिला था) के लिए मना कर दिया।

मैंने इसे कंटेनर में फंसाया, जिसके जवाब में वीएस2005 ने मुझे बताया कि "एलिमेंट 'प्रॉपर्टी ग्रुप' मूल तत्व 'विजुअलस्टूडियोप्रॉपर्टीशीट' के सामग्री मॉडल के अनुसार अप्रत्याशित है। उम्मीद: टूल, उपयोगकर्तामैक्रो।" टूल और यूजर मैक्रो एमएसडीएन पेज में उदाहरण में दिखाए गए एकमात्र चीजें हैं [ड्रैट - स्टैक ओवरव्लो मुझे एक नए उपयोगकर्ता के रूप में यहां एक हाइपरलिंक नहीं डालेगा - 'प्रॉपर्टी शीट्स टूल usermacro' के लिए पहले Google खोज परिणाम] - शायद वे वीएस2005 संपत्ति शीट में एकमात्र चीजें कानूनी हैं?

+0

अधिक लिंक: - संपत्ति चादर प्रलेखन: http://msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx - VS 2010 में बदलाव पर लेख है: http://blogs.msdn.com/vsproject/archive/2009/07/07/vc-directories.aspx मुझे नहीं पता कि एक .vsprops फ़ाइल (VS2005 या 2008) या .props फ़ाइल (2010) में क्या रखना है) एक ही चीज को पूरा करने के लिए जिसे आप VCComponents.dat संपादित करके पूरा करते हैं, प्रत्येक बिल्ड प्लेटफ़ॉर्म के लिए पथ/शामिल/लाइब्रेरी खोज निर्देशिका सेट या ओवरराइड करने के लिए। – metamatt

+0

यह सहायक/प्रासंगिक (अभी भी इसे संसाधित करता है) लगता है: http://stackoverflow.com/questions/142708/what-do-delimiter-and-inheritsfromparent-attributes-mean-in-vsprops-files – metamatt

+0

ठीक है, अगर केवल टूल और UserMacro वहां काम करता है, शायद मुझे कंपाइलर के पथ को ओवरराइड करने का सही तरीका मिलना है और लिंकर के टूल निर्देशों का उपयोग करके पथ शामिल करना है। यह निष्पादन योग्य पथ में मदद नहीं करेगा, हालांकि, है ना? – metamatt

उत्तर

8

सबसे पहले, वास्तव में संपत्ति शीट्स को संपादित करने के लिए एक गुई है, जैसा कि आप सभी वीएस संस्करणों के तहत परियोजना गुणों के समान ही करते हैं।

View->Other Windows->Property Manager 

एक खिड़की लाता है जिसमें आप सभी प्रोजेक्ट कॉन्फ़िगरेशन और प्रॉपर्टी शीट पदानुक्रम देख सकते हैं।

सभी गुणों को ओवरराइड करने के लिए एक प्रॉपर्टी शीट का उपयोग किया जा सकता है, एक vcproj फ़ाइल है, और इसमें उपयोगकर्ता मैक्रोज़ भी हैं। जिन पथों के बारे में आप बात करते हैं उन्हें ओवरराइड करने के लिए, यह VS2008 के लिए एन axample प्रॉपर्टी शीट है जो इंटरमीडिएट, आउटपुट, शामिल और लाइब्रेरी निर्देशिका सेट करता है;

<?xml version="1.0" encoding="Windows-1252"?> 
<!-- override paths --> 
<VisualStudioPropertySheet 
    ProjectType="Visual C++" 
    Version="8.00" 
    Name="PathSettings" 
    IntermediateDirectory="$(TEMP)\$(ProjectName)_$(ConfigurationName)" 
> 
<Tool 
    Name="VCCLCompilerTool" 
    AdditionalIncludeDirectories="d:\api\include" 
/> 
<Tool 
    Name="VCLibrarianTool" 
    OutputFile="c:\mylibs" 
/> 
<Tool 
    Name="VCLinkerTool" 
    OutputFile="c:\myoutput" 
    AdditionalLibraryDirectories="d:\api\_lib" 
/> 

यह VS2005 के लिए के रूप में अच्छी तरह से काम करना चाहिए, लेकिन VS2010 के लिए नहीं: के रूप में आप पता लगा यह एक अलग स्वरूप का उपयोग करता है, तो गुण प्रबंधक में पदानुक्रम के शीर्ष पर डाल दिया बनाने के लिए यकीन है कि यह प्रभावी होता है आपको उनमें से दो को अलग रखना होगा।

+0

हम्म, आशाजनक लग रहा है। उत्तर के लिए धन्यवाद, और मुझे आश्चर्य है कि आधिकारिक एमएस मंच मुझे एक साल पहले क्यों नहीं बता सका! मुझे आपका जवाब स्वीकार करना अच्छा लगेगा, लेकिन मैं अभी इसे सत्यापित करने के लिए एक आसान स्थिति में नहीं हूं। एक सवाल: यह मूल पोस्ट में मेरी तीसरी टिप्पणी के आधार पर दिखता है (दिनांक 1 9 फरवरी '10 को 0:21 बजे, माफ करना, मैं इसे लिंक नहीं कर सकता) - केवल टूल का उपयोग करके - निष्पादन योग्य सेट करने के बारे में क्या उपकरण का आह्वान करने के लिए इस्तेमाल किया जाने वाला पथ? X64 या x86 कंपाइलर, लिंकर इत्यादि को आमंत्रित करने में सक्षम होने की आवश्यकता है – metamatt

+0

कंपाइलर इत्यादि का चयन करना इस तरह से काम नहीं करता है। आप आईडीई में प्लेटफॉर्म और कॉन्फ़िगरेशन का चयन करते हैं, जो तब उस कॉन्फ़िगरेशन/प्लेटफॉर्म के लिए सही टूल और प्रॉपर्टी शीट सेट करता है। आपके पास लिंकर-जनरल-> उन्नत-> लक्ष्य मशीन विकल्प है हालांकि 64 बिट का उपयोग करते समय इसे संपत्ति शीट में सेट किया जाना चाहिए। – stijn

+1

ठीक है। मैंने इस सवाल का वर्णन नहीं किया था, लेकिन जिस कारण से मैं पहली बार पूछ रहा था: हमारे पास वीसी आईडीई का उपयोग कर एक परियोजना पर काम कर रहे डेवलपर्स का एक गुच्छा था, लेकिन एक नए प्लेटफार्म एसडीके के खिलाफ निर्माण। आधिकारिक निर्माण लिखे गए हैं और ठीक काम करते हैं; डेवलपर्स आईडीई का उपयोग करना चाहते हैं; मैं प्रत्येक डेवलपर को मैन्युअल रूप से करने की आवश्यकता के बिना प्लेटफार्म एसडीके पर इंगित करने के लिए आईडीई को कॉन्फ़िगर करने का 1-स्टॉप तरीका चाहता था। संपत्ति पत्रक उत्तर की तरह लगते हैं, लेकिन केवल तभी जब वे हमें सभी आवश्यक सेटिंग्स सेट करने की अनुमति देते हैं। अभी के लिए हम/useenv का उपयोग करते हैं, जो काम करता है लेकिन आपको x64/x86 के लिए आईडीई को अलग से आमंत्रित करने के लिए मजबूर करता है। – metamatt

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