2016-04-27 5 views
8

मेरे पास एक उप निर्देशिका में कुछ शीर्षलेख फ़ाइलें हैं, जिन्हें मेरी निर्देशिका में एक ही नामित उप निर्देशिका में कॉपी किया जाना चाहिए। मुझे लगता है कि ऐसा करने के लिए nobase उपसर्ग उपयोग कर सकते हैं (मैं, Heimdal कोड के साथ काम कर रहा हूँ FYI):autotools nobase और nodist उपसर्गों का उपयोग कैसे करें IHEADERS

nobase_include_HEADERS = hcrypto/aes.h \ 
     hcrypto/bn.h  \ 
     hcrypto/cmac.h \ 
     hcrypto/des.h  \ 
     hcrypto/dh.h  \ 
     hcrypto/dsa.h  \ 
etc... 

लेकिन उन हेडर फाइल में से कुछ का निर्माण प्रक्रिया के दौरान उत्पन्न कर रहे हैं (के बाद से Heimdal उन हैडर से पहले निर्मित किया जाना चाहिए फाइलें मौजूद हैं), इसलिए मुझे नोडिस्ट उपसर्ग का उपयोग करने की आवश्यकता है ताकि डिस्ट मर न जाए।

I found an article कि कहा कि मैं उन दोनों को एक साथ इस्तेमाल कर सकते हैं, और यहां तक ​​कि एक ऐसी ही उदाहरण प्रदान की, तो मैं ऐसा किया:

nobase_nodist_include_HEADERS = hcrypto/aes.h \ 
     hcrypto/bn.h  \ 
     hcrypto/cmac.h \ 
     hcrypto/des.h  \ 
     hcrypto/dh.h  \ 
     hcrypto/dsa.h  \ 
etc... 

मैं कोई चेतावनी या त्रुटियों, लेकिन उन हेडर फाइल नहीं मिलता है नोटिस नहीं किया था मेरी निर्देशिका में कॉपी किया गया। क्या मैं कुछ गलत कर रहा हूं, या ऑटोटूल में कोई बग है?

दिलचस्प है, अगर मैं उपसर्गों रिवर्स, मैं इस त्रुटि मिलती है:

Makefile.am:93: error: 'nodist_nobase_include_HEADERS' is used but 'nobase_includedir' is undefined 

कि त्रुटि के लिए कारण automake documentation में यहां समझाया गया है:

‘nobase_’ should be specified first when used in conjunction with either ‘dist_’ or ‘nodist_’

मैं भी परिभाषित किया है nodist_include_HEADERS (जो काम कर रहा है)। शायद दो परिभाषाएं किसी प्रकार का संघर्ष कर रही हैं?

मैंने अभी nodist_include_HEADERS को हटाने और अपने सभी शीर्षलेखों को nobase_nodist_include_HEADERS लाइन के नीचे डालने का प्रयास किया है, लेकिन अब मेरे शीर्षलेखों में से कोई भी इंस्टॉल नहीं हो गया है।

Automake और सिस्टम जानकारी: automake (जीएनयू automake) 1.13.4 openSUSE 13.2 (x86_64)

+0

, सवाल ही के लिए किसी भी अतिरिक्त जानकारी जोड़ने कृपया बल्कि कुछ टिप्पणियाँ कोस से। –

+0

कृपया, एक मामूली पूर्ण कार्य उदाहरण बनाएं http://stackoverflow.com/help/mcve (अपने मामले में Makefile.am का एक छोटा संग्रह) –

उत्तर

3

तो हेडर एक कार्यक्रम द्वारा उत्पन्न किया गया, तो आप उन्हें BUILT_SOURCES साथ चिह्नित करना चाहिए, इस तरह से automake नहीं उलझन में हो जाएगा उन्हें dist के रूप में स्थापित करने का प्रयास करें।

दूसरा, शीर्षलेख फ़ाइलों के लिए जो स्थापित करने के लिए नहीं हैं, HEADERS के बजाय SOURCES निर्देश का उपयोग करना बेहतर है। इस प्रयास करें:

nobase_include_SOURCES += hcrypto/aes.h \ 
    hcrypto/bn.h  \ 
    hcrypto/cmac.h \ 
    hcrypto/des.h  \ 
    hcrypto/dh.h  \ 
    hcrypto/dsa.h 
BUILT_SOURCES = hcrypto/aes.h \ 
    hcrypto/bn.h  \ 
    hcrypto/cmac.h \ 
    hcrypto/des.h  \ 
    hcrypto/dh.h  \ 
    hcrypto/dsa.h 
संबंधित मुद्दे