Common Lisp - 获取文件路径

14
在Common Lisp中,有没有一种方法可以获取编译文件的路径(类似于当前目录)?
该文件不在当前目录文件夹内。
5个回答

14

虽然这应该是一条评论,但我会提供一些代码示例来帮助原作者。

首先,你需要更清楚地说明你想做什么。你要解决的问题是什么?

其次,以下是几个可能有用的示例:

* *default-pathname-defaults*
#P"/Users/aerique/"
  • merge-pathnames 允许你构造新的路径名:

  • * (merge-pathnames "lib/misc" *default-pathname-defaults*)
    #P"/Users/aerique/lib/misc"
    * (merge-pathnames "lib/misc/" *default-pathname-defaults*)
    #P"/Users/aerique/lib/misc/"
    
  • asdf:system-source-directory返回一个系统加载了ASDF后的路径:

  • * (asdf:system-source-directory :linedit)  
    #P"/Users/aerique/quicklisp/dists/quicklisp/software/linedit-20111203-git/"
    

    此外,还可以查看链接的ASDF手册以获取更多有用的文件和系统函数。


    9

    2

    也许您需要compile-file-pathname函数,它可以提供compile-file编译后的目标路径。

    如果您能提供更多相关背景信息,将有助于更好地理解您的需求。


    0
    如果您想在不使用ASDF函数的情况下获取路径名,但又需要考虑使用ASDF的用户,可以像这样使用:
    (defmacro project-pathname ()
      (let ((path (or *compile-file-pathname* *load-truename*)))
        `(progn ,path)))
    

    这是必要的,因为ASDF存储在一个"/home/you/.../.cache/..."目录中,您需要使用一个宏在编译时捕获路径名。


    -2

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接