我試圖寫一個makefile片斷編譯.el
文件.elc
文件錯誤。我有以下片段:(我已經格式化的演示片斷,make
可能會不喜歡他提出了這樣)捕捉來自字節編譯的文件在批處理模式下
.el.elc:
$(EMACS) -q -Q --batch \
--eval "(progn
(setq load-path (cons \"$(abs_srcdir)\" load-path))
(setq load-path (cons nil load-path))
(defun byte-compile-dest-file (f) \"[email protected]\")
(condition-case nil
(byte-compile-file \"$<\")
(error (kill-emacs 1))))"
$(abs_srcdir)
被正確定義,但我有兩個問題:
首先:藉助目錄佈局類似如下:
+- foo.el <- foo.el lives in $(abs_srcdir)
+- _build/
++- bar.el
++- Makefile
(即,VPATH構建其中。個生活在SRCDIR,我試圖建立在_build
)
如果bar.el
取決於foo.el
(通過(require 'foo)
和(provide 'foo)
),嘗試編譯bar.elc
失敗與錯誤:
In toplevel form:
../bar.el:1:1:Error: Cannot open load file: foo
這給我的印象作爲奇怪,因爲以爲我是consing $(abs_srcdir)
到load-path
。發生了什麼?
第二個問題是,即使發生這種情況,emacs
仍以狀態0退出,儘管我努力將(byte-compile-file)
呼叫換成(condition-case)
。這裏發生了什麼?
'(setq load-path(cons nil load-path))'將當前目錄添加到'load-path'。見http://www.gnu.org/software/emacs/manual/html_node/emacs/Lisp-Libraries。html - 「加載路徑中的列表條目也可以有特殊值'nil',它代表當前的默認目錄。」 – 2012-07-12 21:37:34
我還應該補充說,由於某些原因,無論是否爲我工作,我不得不''(abs_builddir)'而不是。 – 2012-07-12 21:51:52