общий lisp - получить путь к файлу - PullRequest
9 голосов
/ 07 декабря 2011

В Common Lisp, есть ли способ получить путь к скомпилированному файлу (что-то вроде current-directory)?

Файл не находится в папке текущего каталога.

Ответы [ 4 ]

11 голосов
/ 07 декабря 2011

Это должен быть комментарий, но я приведу несколько примеров кода, которые могут помочь оригинальному постеру.

Прежде всего, вам нужно быть немного более ясным в отношении того, что вы хотите сделать. Какую проблему вы пытаетесь решить?

Во-вторых, вот пара примеров, которые могут быть полезны:

  • *default-pathname-defaults* обычно устанавливается в каталог, в котором запускается образ CL:

    * *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 для более полезных файловых и системных функций.

7 голосов
/ 06 октября 2013

*load-truename* соотв. *load-pathname* дает вам то, что вам нужно.

http://www.lispworks.com/documentation/HyperSpec/Body/v_ld_pns.htm

2 голосов
/ 07 декабря 2011

Возможно, вы хотите <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_cmp__1.htm" rel="nofollow">compile-file-pathname</a>, что дает вам пункт назначения, куда compile-file будет писать.

Было бы полезно, если бы вы предоставили больше контекста о том, чего вы пытаетесь достичь.

0 голосов
/ 07 декабря 2011

Вы можете использовать:

*default-pathname-defaults*

Пожалуйста, смотрите http://cybertiggyr.com/gene/pathnames-0/node11.html

...