2013-02-14 10 views
5

में अलग-अलग परियोजनाओं को जोड़ना ठीक है यह सरल होना चाहिए, लेकिन इसे समझने के लिए प्रतीत नहीं होता है। मेरे पास दो परियोजनाएं हैं, प्रोजेक्ट ए और प्रोजेक्ट बी। प्रोजेक्ट बी पुरानी परियोजना, प्रोजेक्ट ए पर निर्भर करता है। अब मैं प्रोजेक्टबी बनाना चाहता हूं। और मैं अब प्रोजेक्ट ए के लिए निर्देशिका संरचना को बदलना नहीं चाहता हूं। समस्या यह है कि, मैं हमेशा प्रोजेक्ट ए के साथ -उपूटडिर बिन का उपयोग करता हूं।जीएचसी

PROJECTA इस तरह देखा:

ProjectA/ 
    bin/ 
    (*.o, *.hi in proper paths, sometimes also *.p_o and *.p_hi) 
    Foo/ 
    ModuleX.hs 
    ModuleA.hs 
    ModuleB.hs 

अब मैं अपनी अलग -outputdir साथ ProjectB के साथ एक अलग फ़ोल्डर है,। मुझे बस पुरानी प्रोजेक्ट ऑब्जेक्ट फ़ाइलों से लिंक करने की आवश्यकता है (प्रोजेक्टए फाइलों को बिना संकलित किए)। मुझे एहसास है कि मैं शायद प्रोजेक्टए को कैबलाइज कर सकता हूं ... लेकिन क्या कोई आसान तरीका नहीं है?

+0

मुझे लगता है कि आप एक निर्माण प्रणाली की जरूरत है। यदि आपको कैबल (या मेकफ़ाइल) पसंद नहीं है तो हिलाएं (http://community.haskell.org/~ndm/shake/) – Jonke

+0

धन्यवाद, मैं शेक की जांच करूंगा, लेकिन मुझे वास्तव में एक प्रतिस्थापन की आवश्यकता नहीं है। असल में, मैं अभी बनाने का बहुत खुश उपयोगकर्ता हूं। समस्या यह है कि जीएचसी में .o और .hi फ़ाइलों की खोज करने का यह अजीब तरीका प्रतीत होता है जो पर्याप्त रूप से अनुकूलन प्रतीत नहीं होता है। दूसरे शब्दों में, अगर मैं -outputdir बिन जोड़ने ... यह बिन में precompiled फ़ाइलों के लिए दिखाई देगा, और मैं PROJECTA/bin – Samee

उत्तर

2

"आसान तरीका" कबाल उपयोग करने के लिए है। एक बार जब आप प्रोजेक्ट ए स्थापित कर लेंगे, तो आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि वास्तव में यह वास्तव में कहां से संग्रहीत है; जीएचसी बस इसे मिलेगा।

यदि आप ऐसा करना नहीं चाहते हैं, GHC को -i स्विच का उपयोग क्या आपके संकलित सामग्री के लिए खोज करने के लिए फ़ोल्डर बताने के लिए प्रयास करें।

http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/separate-compilation.html

+0

को मैं पहले से ही इस पोस्ट करने से पहले मैं करने की कोशिश की है कि बदलाव के लिए एक रास्ता नहीं मिल रहा। क्या मैं चाहता हूं कि सब कुछ, सिवाय इसके कि ProjectA में सब कुछ भी recompiles। मैं 'gcc x.o y.o' के लिए एनालॉग खोजने की उम्मीद कर रहा था। – Samee

+0

और कैबल के लिए, यह काम करता है, लेकिन मैं इसे अपने ~ /। कैबल फ़ोल्डर में नहीं छोड़ना चाहता हूं जब मैं केवल 2-3 परियोजनाओं के लिए इसका उपयोग करूँगा। मैं नहीं चाहता कि यह हर परियोजना के लिए मेरे खोज पथ में हो। – Samee

+1

दिलचस्प। प्रलेखन का दावा है कि '--make' मोड में, यह निर्दिष्ट निर्देशिका में _source_ फ़ाइलों की तलाश करेगा, लेकिन अन्यथा यह इंटरफ़ेस (और संभावित रूप से ऑब्जेक्ट) फ़ाइलों को देखेगा। बेशक, चूंकि जीएचसी 7 (?) '--मेक' मोड अब हमेशा डिफ़ॉल्ट है, और मुझे यकीन नहीं है कि इसे कैसे बंद करें ... – MathematicalOrchid

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