【问题标题】:How to add a local project to asdf configured by quicklisp如何将本地项目添加到quicklisp配置的asdf
【发布时间】:2012-06-30 22:35:37
【问题描述】:

我想通过 asdf 将本地项目添加到已知项目中,但由于 asdf 是由 quicklisp 安装和配置的,并且*central-registry* 指向“#P/home/user/quicklisp/quicklisp/” ,其中包含 .lisp 文件。我不知道该怎么做,因为manual 解释说指向目录的符号链接可以做到这一点,但我不想在quicklisp 中乱七八糟。 (不过,它确实可以用作修补程序!)

因此:如何将本地项目添加到由 quicklisp 安装和配置的 asdf (NOT QUICKLISP)?

【问题讨论】:

    标签: common-lisp asdf quicklisp


    【解决方案1】:

    asdf:*central-registry* 不仅仅是一个路径,它是路径名列表。你可以简单地做: (push "/path-to-your-project/" asdf:*central-registry*)。 如果你使用 SBCL,你可以将此行添加到 ~/.sbclrc。

    【讨论】:

    • 在 ASDF 手册中将 central-registry 描述为已弃用:“不建议新用户使用这种用于配置 ASDF 的旧样式,但老用户支持它”
    【解决方案2】:

    如果您使用 Quicklisp,您可以使用专用目录 ~/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 .

    例如你可以这样写:

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

    在您的~/.config/common-lisp/source-registry.conf.d/my-asdf.conf 中 添加目录,或

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

    如果要扫描所有子目录。

    【讨论】:

      【解决方案3】:

      ASDF 手册在Section 3:

      自 ASDF 2 以来,配置 ASDF 查找您的位置的首选方式 系统是源注册工具,在它自己的完整描述 本手册的章节。见Controlling where ASDF searches for systems

      Controlling where ASDF searches for systems 中的第 7 项 是

      如果存在,源注册表将从系统配置目录 /etc/common-lisp/source-registry.conf.d/ 配置。

      这个位置在 Debian 中是可用的并且是我使用的。默认情况下,Debian 将下载的 CL 库的来源放在/usr/share/common-lisp/source 中。但是,我不知道(尽管我试图找出)这个位置是如何被 ASDF 知道的。 因此,您可以将带有路径名的文件添加到此位置,以使 ASDF 知道这些路径名。我添加了一个文件/etc/common-lisp/source-registry.conf.d/04-local.conf,其中包含

      (:tree #p"/usr/local/share/common-lisp/source/")

      现在我可以将本地下载的 CL 库的源代码放在 /usr/local/share/common-lisp/source/ 中,它们将对 ASDL 可见。 :tree 语法在 Configuring ASDF to find your systems.

      asdf:*central-registry* 现已折旧。见Subsection 3.2: Configuring ASDF to find your systems — old style

      【讨论】:

        【解决方案4】:

        (push "~/your/local/lisp/projects/folder/" ql:*local-project-directories*)
        

        在您的.sbclrc 中,您无需符号链接或移动文件夹即可快速加载您的项目。

        我知道你问过 asdf,但我认为你不想在实际使用 quicklisp 时乱用 asdf。

        【讨论】:

          猜你喜欢
          • 2018-01-06
          • 2019-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-15
          • 1970-01-01
          • 2014-12-03
          • 2013-11-08
          相关资源
          最近更新 更多