2012-05-23 12 views
6

मैं उन स्थानों में मनमानी डेटा फ़ाइलों को स्थापित करने के लिए automake कैसे बता सकता हूं?Automake के साथ निश्चित स्थान में मनमानी डेटा फ़ाइलों को स्थापित करें?

मेरे पास कुछ ऐसी फ़ाइलें हैं जिन्हें मुझे विशिष्ट स्थानों में रखना है, उदा। "datafile1", मेरी परियोजना में, "/usr/MyProduct/flash_memory" पर प्रतिलिपि बनाने की आवश्यकता है।

  • "/usr/MyProduct/flash_memory" एक पूर्ण पथ है जिसे मैं नहीं बदल सकता।
  • "datafile1" एक बाइनरी डेटा फ़ाइल है जो make द्वारा "निर्मित" नहीं है, लेकिन इसे make install द्वारा प्रतिलिपि बनाने की आवश्यकता है।
  • मैं make dist पर सहन नहीं कर सकता। इसे make install द्वारा प्रतिलिपि बनाने की आवश्यकता है (यह एक लंबी व्याख्या है, इसलिए, कृपया इसे ध्यान में रखें)।
  • मैं install-hook का उपयोग नहीं करता, लेकिन एक और अधिक सुरुचिपूर्ण दृष्टिकोण (यदि संभव हो) पसंद करते हैं।

वास्तव में धन्यवाद!

उत्तर

11

अपने मेकफ़ाइल.एम में पूर्ण पथ का उपयोग न करें। कभी। आप $(datadir) में datafile1 डाल करने के लिए जो $(prefix)/share/MyProduct को विस्तार होगा automake बता सकते हैं, या आप $(prefix)/MyProduct/flash_memory का विस्तार और वहाँ फ़ाइलें डाल करने के लिए flash_DIR परिभाषित कर सकते हैं, लेकिन अंत उपयोगकर्ता /usr को या कुछ और करने के लिए $(prefix) या तो स्थापित करने के लिए अनुमति दी जानी चाहिए। क्या आप Makefile.am में क्या करना चाहते है:

flashdir = $(prefix)/$(PACKAGE)/flash_memory 
flash_DATA = datafile1 

(यह शायद अधिक उपयुक्त $(prefix)/@[email protected]/flash_memory उपयोग करने के लिए, के बाद से पैकेज शायद मेकअप समय में संशोधन करने योग्य नहीं होना चाहिए होगा, लेकिन मुझे नहीं लगता कि यह बहुत महत्वपूर्ण है ।)

फिर, जब आप उपयोगकर्ता हों, तो make install चलाएं /usr पर उपसर्ग सेट के साथ। यदि आप Makefile.am में एक पूर्ण पथ का उपयोग करने का प्रयास करते हैं, तो यह चरणबद्ध इंस्टॉलेशन (यानी DESTDIR सेटिंग) को अस्वीकार कर देगा, उपयोगकर्ता लचीलापन को प्रतिबंधित करेगा, और गलत करने की बात है। मुख्य बिंदु यह है कि पैकेज रखरखाव को अंतिम स्थान चुनना नहीं है; यह उपयोगकर्ता के लिए एक निर्णय है।

+0

जैसा कि मैंने पहले कहा था, "'/usr/MyProduct/flash_memory' "एक पूर्ण पथ है जिसे मैं नहीं बदल सकता। यह मेरी पसंद नहीं है। इसे अनदेखा करते हुए, मैंने कोशिश की "confdir = ... conf_DATA = datafile1'" लेकिन यह काम नहीं किया। कोई संकेत? धन्यवाद – j4x

+2

@fljx जब आप कहते हैं कि "मैं नहीं बदल सकता", तो क्या आपका मतलब है कि "मैं" उपयोगकर्ता को पैकेज स्थापित करने के रूप में, या जब आप पैकेज रखरखाव करते हैं तो "मैं" का मतलब है। यदि पूर्व, मेरा जवाब काम करता है। यदि आप बाद वाले का मतलब है, तो automake का उपयोग बंद करो; आप उपकरण का दुरुपयोग कर रहे हैं। –

+0

मेरा मतलब है "मैं, वह कर्मचारी जो मेरे मालिक का पालन करता है"। वैसे भी, मैंने 'confdir' को" confdir = $ (उपसर्ग)/usr/awmg/फ़्लैश/'" में बदल दिया है और यह काम करता है। पूर्ण पथ नहीं है। मैं बस समझना चाहता हूं क्यों, अब ... धन्यवाद फिर से! – j4x

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