Я иногда хочу, чтобы мой каталог сборки был отделен от моего исходного каталога (например, я использую ту же самую исходную NFS, смонтированную в нескольких разных средах сборки). В этой конфигурации я не могу использовать flymake, потому что он не может найти Make-файлы. Может ли кто-нибудь рекомендовать хороший подход к получению flymake, чтобы найти правильный каталог сборки и запустить make -C check-syntax? Я чувствую, что это должна быть распространенная проблема, но Google не смог меня здесь.Каков самый простой способ заставить flymake работать с проектом autoconf с отдельным каталогом сборки?
0
A
ответ
0
Для записи, я в конечном итоге делает это (улучшения приветствуются):
(defadvice flymake-find-buildfile
(around advice-find-makefile-separate-obj-dir
activate compile)
"Look for buildfile in a separate build directory"
(let* ((source-dir (ad-get-arg 1))
(bld-dir (ac-build-dir source-dir)))
(ad-set-arg 1 bld-dir)
ad-do-it))
(defun ac-find-configure (source-dir)
(locate-dominating-file source-dir "configure"))
(defvar project-build-root nil
"top build directory of the project")
(defun ac-build-dir (source-dir)
"find the build directory for the given source directory"
(condition-case nil
(let* ((topdir (ac-find-configure source-dir))
(subdir (file-relative-name (file-name-directory source-dir) topdir))
(blddir (concat (file-name-as-directory project-build-root) subdir)))
blddir)
(error source-dir)))
и установка project-build-root
в мой каталог сборки в моем верхнем исходном каталоге .dir-locals.el