首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASDF输出重定向

ASDF输出重定向
EN

Stack Overflow用户
提问于 2014-08-15 08:27:03
回答 2查看 397关注 0票数 2

我想设置ASDF存储编译文件的目录。我更喜欢用shell脚本来完成它。根据此页,应该定义环境变量ASDF_OUTPUT_TRANSLATIONS

好的,这里是:

代码语言:javascript
复制
$ export ASDF_OUTPUT_TRANSLATIONS="$HOME/.cache/common-lisp/my-dir/"

但是,当我尝试测试配置时,它不起作用:

代码语言:javascript
复制
$ clisp -x "(asdf:compile-system :my-system)"

输出:

代码语言:javascript
复制
;; 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脚本的输出目录,这样无论源文件在哪里,每个文件都将位于可预测的位置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-16 06:49:08

我在以下方面取得了成功:

代码语言:javascript
复制
$ export ASDF_OUTPUT_TRANSLATIONS="/:$HOME/.cache/common-lisp/my-dir/"

注释1:目标目录可能不存在:在本例中,将创建它。

备注2:不能在此字符串中使用***等符号。/目录表示所有可能的目录。

注释3:将在my-dir中创建子目录,如下所示:

代码语言:javascript
复制
/home/mark/.cache/common-lisp/my-dir/home/mark/path/to/source/files/

这不是我想要的,但是由于我可以在构建之前检测源文件的位置,方法是将源文件放置到shell脚本所在目录的子目录中,所以这不是一个关键问题。

票数 2
EN

Stack Overflow用户

发布于 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意味着匹配所有。

您还可以使用函数来翻译目录:

代码语言:javascript
复制
(t (:function (lambda (dir) #|translate dir as you like|#)))

也可以阅读关于在哪里放置这样的指令。环境变量似乎被一些我还没有完全理解的特殊语法处理。如果配置文件不能正常工作,您可以使用配置文件。

编辑:对不起,只是阅读文档(这真的有改进的空间) http://common-lisp.net/project/asdf/asdf/Output-Configuration-DSL.html。您可能需要更明确一点:

代码语言:javascript
复制
(:output-translations (t "/foo/bar"))

相应的"shell友好“语法可能如下:

代码语言:javascript
复制
**/:/foo/bar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25323394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档