2012-06-29 7 views
8

द्वारा कॉन्फ़िगर किए गए asdf को स्थानीय प्रोजेक्ट कैसे जोड़ें, मैं asdf द्वारा ज्ञात प्रोजेक्ट्स में एक स्थानीय प्रोजेक्ट जोड़ना चाहता हूं, लेकिन इस तथ्य के कारण कि asdf को Quicklisp द्वारा स्थापित और कॉन्फ़िगर किया गया था और *central-registry* अंक "# P/घर/उपयोगकर्ता/quicklisp/quicklisp/", जिसमें। lisp फ़ाइलें शामिल हैं। मुझे नहीं पता कि manual के रूप में इसे कैसे करना है, यह बताता है कि निर्देशिका में एक प्रतीकात्मक लिंक यह करेगा, लेकिन मैं quicklisp के अंदर गड़बड़ नहीं करना चाहता। (यह हॉटफिक्स के रूप में काम करता है, हालांकि!)Quicklisp

इसलिए: asdf (नहीं QUICKLISP) को स्थानीय प्रोजेक्ट कैसे जोड़ा जाए जो Quicklisp द्वारा स्थापित और कॉन्फ़िगर किया गया था?

उत्तर

13

यदि आप क्विकलिस्प का उपयोग करते हैं तो आप समर्पित निर्देशिका ~/quicklisp/local-projects/ का उपयोग कर सकते हैं जो अन्य निर्देशिकाओं से पहले स्कैन किया गया है। इसका उपयोग करने के लिए, बस अपनी परियोजना या एक प्रतीकात्मक लिंक डालें।

(quickproject:make-project "~/quicklisp/local-projects/my-new-website/" 
    :depends-on '(restas parenscrit cl-who)) 

(quickproject:make-project "~/src/lisp/my-cool-gui/" 
    :depends-on '(qt)) 

$ ln -s ~/src/lisp/my-cool-gui ~/quicklisp/local-projects/my-cool-gui 

हालांकि, अगर आप वास्तव में ASDF कॉन्फ़िगर करना चाहते हैं के रूप में documentation में विस्तार से बताया है। अपने ~/.config/common-lisp/source-registry.conf.d/my-asdf.conf को में

(:directory "~/src/lisp/my-project-XYZ/") 

एक निर्देशिका जोड़ना चाहते हैं या

(:tree "~/src/lisp/") 

अगर आप चाहते हैं सभी सबडायरेक्टरियों को स्कैन करने की:

उदाहरण के लिए आप इस डाल सकते हैं।

5

asdf:*central-registry* केवल एक पथ नहीं है, यह पथनामों की सूची है। आप बस कर सकते हैं: (push "/path-to-your-project/" asdf:*central-registry*)। यदि आप एसबीसीएल का उपयोग करते हैं, तो आप इस लाइन को ~/.sbclrc में जोड़ सकते हैं।

+5

एएसडीएफ मैनुअल में * केंद्रीय रजिस्ट्री * को बहिष्कृत करने के रूप में वर्णित करता है: "नए उपयोगकर्ताओं के लिए एएसडीएफ को कॉन्फ़िगर करने के लिए यह पुरानी शैली अनुशंसित नहीं है, लेकिन यह पुराने उपयोगकर्ताओं के लिए समर्थित है" – postfuturist

3

ASDF मैनुअल Section 3 में है:

ASDF 2, जहां ASDF अपने सिस्टम पाता स्रोत-रजिस्ट्री की सुविधा है, पूरी तरह से इस पुस्तिका का अपना अध्याय में वर्णित है कॉन्फ़िगर करने के लिए पसंदीदा तरीका के बाद से। Controlling where ASDF searches for systems देखें।

मद 7 Controlling where ASDF searches for systems में

स्रोत रजिस्ट्री सिस्टम विन्यास निर्देशिका /etc/common-lisp/source-registry.conf.d/ से विन्यस्त किया जाएगा यदि वह मौजूद है।

यह स्थान डेबियन में उपलब्ध है और मैं इसका उपयोग करता हूं। डिफ़ॉल्ट रूप से, डेबियन /usr/share/common-lisp/source में डाउनलोड सीएल पुस्तकालयों के स्रोत रखता है। हालांकि, मुझे नहीं पता (हालांकि मैंने यह पता लगाने की कोशिश की है) यह स्थान एएसडीएफ को कैसे ज्ञात किया जाता है। तो, आप एएसडीएफ को ज्ञात उन पथनामों को बनाने के लिए, इस स्थान पर पथनामों वाली फ़ाइलों को जोड़ सकते हैं। मैं एक फ़ाइल, /etc/common-lisp/source-registry.conf.d/04-local.conf जोड़ दिया है,

युक्त (: पेड़ #p "/ usr/स्थानीय/शेयर/आम तुतलाना/स्रोत /")

और अब मैं स्रोत रखे जा सकते का स्थानीय स्तर पर सीएल पुस्तकालयों डाउनलोड किया /usr/local/share/common-lisp/source/ में और वे एएसडीएल के लिए दृश्यमान होंगे। :tree सिंटैक्स का वर्णन Configuring ASDF to find your systems में किया गया है।

asdf: * केंद्रीय रजिस्ट्री * अब अवमूल्यन है। Subsection 3.2: Configuring ASDF to find your systems — old style देखें।