Common lisp 是否更改asdf中已编译文件的路径?

Common lisp 是否更改asdf中已编译文件的路径?,common-lisp,asdf,Common Lisp,Asdf,如何更改放置.fas文件的路径?通过lisp代码而不是配置文件 我是这样做的: (asdf:disable-output-translations) (push *default-pathname-defaults* asdf:*central-registry*) (setq asdf:*central-registry* (append asdf:*central-registry* (directory (merge-pathnames

如何更改放置.fas文件的路径?通过lisp代码而不是配置文件

我是这样做的:

(asdf:disable-output-translations)
(push *default-pathname-defaults* asdf:*central-registry*)
(setq asdf:*central-registry*
      (append asdf:*central-registry*
             (directory (merge-pathnames
                         (make-pathname :directory '(:relative :wild))
                         *default-pathname-defaults*))))
使用ECL,它会在正在编译的源代码目录中生成.fas和.o文件,但我不希望它位于项目目录中,它位于我所经过的路径上,以便更好地组织我自己

比如:

(asdf:set-path-compiled-files "/home/noloop/lisp-armv7a-libs/builds")

asdf:*central registry*
用于源代码的位置,编译结果没有一个位置,因为asdf2使用多个实现显式处理您,这些实现具有不兼容的fasl格式(这是asdf2相对于以前状态的一个改进点)

根据[1]
(asdf:初始化输出翻译列表)
可用于以编程方式设置翻译,而
(asdf:确保输出翻译)
可用于查看当前值

如DSL中所述,您必须包括且仅包括
:继承配置
:忽略继承配置
中的一个

不清楚您是否还需要设置
:启用用户缓存
:禁用缓存
中的一个,但选择一个似乎是明智的

如[2]所述,订单很重要

在我的机器上,使用sbcl:

cl-user> (asdf::initialize-output-translations '(:output-translations (t #p"/tmp/asdf/") :disable-cache :ignore-inherited-configuration))
给出:

((#P"/home/peter/Programming/unix-built/sbcl/lib/sbcl/**/*.*" T)
 (#P"/tmp/asdf/" T) (T #P"/tmp/asdf/") (T T)
 (#P"/home/peter/.cache/common-lisp/sbcl-2.0.0.104-b5a4454ca-linux-x64/**/*.*"
  T)
 (T
  #P"/home/peter/.cache/common-lisp/sbcl-2.0.0.104-b5a4454ca-linux-x64/**/*.*"))
在尝试加载系统时,我在/tmp/asdf中看到了FASLs

1:


2:

我已经读过了,但是没有看到一个例子,我不知道如何使它工作。我目前正在使用
find$(SYSTEM\u DIRS)-type f\(-name\*.fas-o-name\*.o\)-exec mv{}$(BUILD\u DIR);'但我更喜欢在lisp中实现。我尝试了
(asdf:initializeoutput translations'(:output translations
(#P)/home/noloop/lisp-armv7a-libs/builds))`但不起作用。我得到:类型的条件:INVALID-OUTPUT-TRANSLATION。我也尝试了很多写这篇文章的方法,但都不起作用。我尝试了
(asdf::initialize output translations'(:output translations:disable cache:ignore inherited configuration(t#p)/home/noloop/lisp-armv7a-libs/builds/)
,但不起作用。它保存在源目录中,如是否调用
(asdf:disable output translations)