我想设置ASDF存储编译文件的目录。我更喜欢用shell脚本来完成它。根据此页,应该定义环境变量ASDF_OUTPUT_TRANSLATIONS。
好的,这里是:
$ export ASDF_OUTPUT_TRANSLATIONS="$HOME/.cache/common-lisp/my-dir/"但是,当我尝试测试配置时,它不起作用:
$ clisp -x "(asdf:compile-system :my-system)"输出:
;; Loading file /home/mark/.clisprc.lisp ...
;; Loading file /home/mark/quicklisp/setup.lisp ...
*** - Uneven number of components in source to destination mapping:
"/home/mark/.cache/common-lisp/my-dir/"
Bye.再见。这是可能的结果之一。我已经尝试给ASDF_OUTPUT_TRANSLATIONS分配了很多值。奇奇怪怪。又小又大。没有成功。如果有这样的配置示例,这会容易得多,但我找不到。
另一个问题是,当ASDF将所有内容放到一个目录中时,我不知道要编译的系统是否会以相同的名称覆盖文件。我真正想要的是临时设置shell脚本的输出目录,这样无论源文件在哪里,每个文件都将位于可预测的位置。
发布于 2014-08-16 06:49:08
我在以下方面取得了成功:
$ export ASDF_OUTPUT_TRANSLATIONS="/:$HOME/.cache/common-lisp/my-dir/"注释1:目标目录可能不存在:在本例中,将创建它。
备注2:不能在此字符串中使用*或**等符号。/目录表示所有可能的目录。
注释3:将在my-dir中创建子目录,如下所示:
/home/mark/.cache/common-lisp/my-dir/home/mark/path/to/source/files/这不是我想要的,但是由于我可以在构建之前检测源文件的位置,方法是将源文件放置到shell脚本所在目录的子目录中,所以这不是一个关键问题。
发布于 2014-08-15 11:48:13
按照我阅读http://common-lisp.net/project/asdf/asdf/Controlling-where-ASDF-saves-compiled-files.html的方式,您需要在那里放置一个映射,指定匹配和转换。在sexp语法中,可以将其指定为(t "/home.../...dir/"),其中t意味着匹配所有。
您还可以使用函数来翻译目录:
(t (:function (lambda (dir) #|translate dir as you like|#)))也可以阅读关于在哪里放置这样的指令。环境变量似乎被一些我还没有完全理解的特殊语法处理。如果配置文件不能正常工作,您可以使用配置文件。
编辑:对不起,只是阅读文档(这真的有改进的空间) http://common-lisp.net/project/asdf/asdf/Output-Configuration-DSL.html。您可能需要更明确一点:
(:output-translations (t "/foo/bar"))相应的"shell友好“语法可能如下:
**/:/foo/barhttps://stackoverflow.com/questions/25323394
复制相似问题