2009-01-28 10 views
7

मैं समाधान बनाने से पहले एनएएनटी के साथ .h फ़ाइल में स्ट्रिंग को संशोधित करना चाहता हूं।NANT के साथ स्रोत को कैसे संशोधित करें?

.h फ़ाइल में एक मैक्रो है: #define SERVER_ADDRESS "www.customserver.net" और मैं सॉफ़्टवेयर को तैनात करने से पहले स्ट्रिंग को संशोधित करना चाहता हूं ताकि प्रत्येक बिल्ड को कमांड लाइन में पता पास करके कस्टम पता के लिए बनाया जा सके। ।

क्या कोई जानता है कि यह कैसे किया जा सकता है?

धन्यवाद!

उत्तर

14

कोई इस मदद के लिए loadfile कार्य का उपयोग कर सकता है। यह कार्य किसी फ़ाइल में दी गई फ़ाइल को लोड करता है। वास्तव में उपयोगी क्या है जब आप फ़ाइल के कुछ क्षेत्रों को प्रतिस्थापित करने के लिए replacetokens के साथ filterchain लागू करते हैं।

#ifndef MyMacros_h 
#define MyMacros_h 

#define SERVER_ADDRESS "@[email protected]" 

#endif 

एक प्रयोग loadfile कार्य किसी भी तार के साथ बदलने के लिए @ SERVER_ADDRESS_TOKEN @, और फिर echo इस्तेमाल कर सकते हैं: उदाहरण के लिए यदि एक टेम्पलेट की तरह हेडर फाइल जो कुछ इस तरह देखा परिभाषित करने के लिए एक थे वास्तव में वास्तविक शीर्षलेख फ़ाइल को वापस लिखने का कार्य।

<loadfile file="MyMacrosTemplate.h" property="theMacrosFileContents"> 
    <filterchain> 
     <replacetokens> 
      <token key="SERVER_ADDRESS_TOKEN" value="www.customerserver.net" /> 
     </replacetokens> 
    </filterchain> 
</loadfile> 
<echo file="MyMacros.h" message="${theMacrosFileContents}" /> 

यह SERVER_ADDRESS के लिए संशोधित स्ट्रिंग के साथ एक MyMacros.h फ़ाइल उत्पन्न करेगा।

0

मुझे नहीं लगता कि यह NANT का उपयोग करने का उचित तरीका है। मैं इस तरह से फाइल सामग्री को संशोधित नहीं करना चाहता। मुझे विश्वास नहीं है कि यह संभव है।

शायद आपके पास प्रत्येक मामले के लिए एक अलग फ़ाइल हो सकती है और इनपुट पैरामीटर के आधार पर इसका पथ निर्दिष्ट कर सकते हैं।

व्यक्तिगत रूप से, मुझे लगता है कि इस तरह के तारों को ऐप में हार्ड-कोड नहीं किया जाना चाहिए। यदि वे बदलने जा रहे हैं, तो उन्हें स्टार्टअप पर पढ़ने वाले कॉन्फ़िगरेशन या प्रॉपर्टी फ़ाइलों में बाह्यकृत करने के लिए बेहतर होगा। इस तरह आप स्रोत को बदलने या पुन: संकलित किए बिना उन्हें बदल सकते हैं।

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