如何设置字节重新编译目录使用缓存目录?

How to set byte-recompile-directory use a cache directory?

我使用 (byte-recompile-directory (expand-file-name "~/.emacs.d") 0) 生成 .elc 文件,它改进了 emacs 启动,但我想设置byte-recompile-directory 使用缓存文件夹不在同一个文件中生成 .elc 文件 folder.and 我想知道我是否需要声明 emacs 使用缓存文件夹而不是 el 文件?emacs 会自动加载这些 ·.elc · 文件?像这样

├── core
│   ├── core-keybinds.el
│   ├── core-provider.el
│   └── core.el
├── early-init.el
├── init.el

但是当我使用 (byte-recompile-directory (expand-file-name "~/.emacs.d") 0)

├── core
│   ├── core-keybinds.el
│   ├── core-keybinds.elc
│   ├── core-provider.el
│   ├── core-provider.elc
│   └── core.el
│   ├── core.elc
├── early-init.el
|── early-init.elc
├── init.el
├── init.elc

也许这样是最好的方式

├── .cache
│   ├── core-keybinds.elc
│   ├── core-provider.elc
│   ├── core.elc
│   └── init.elc
│   └── early-init.elc
├── core
│   ├── core-keybinds.el
│   ├── core-provider.el
│   └── core.el
├── early-init.el
├── init.el

然后如何让 emacs 加载这些 .elc 文件...我是新来的 emacs.so 需要帮助。

您可以将byte-compile-dest-file-function设置为将文件放入缓存目录的函数:

(defun my-bytecomp-dest-file (source)
  (expand-file-name (file-name-nondirectory source) "~/.cache/"))

(setq byte-compile-dest-file-function 'my-bytecomp-dest-file)

您需要将缓存目录显式添加到要找到的 .elc 文件的加载路径:

(add-to-list 'load-path "~/.cache/")

然后您可以使用例如加载文件(require 'core)(load "core").