这似乎是一个明显的黑客,我讨厌自己写,但我找不到运气.
我希望一种方法可以M-x compile在目录树中从cwd向上搜索到带有Makefile的第一个目录,然后运行make命令.所以,基本上就是这样
cd ..再试一次停下来$HOME.
下面的代码定义compile-parent,它定位最近的代码Makefile并创建一个make使用该Makefile 的命令.它的行为就像compile它仍会提示,向您显示它将使用的命令,并为您提供编辑它的机会,例如通过指定特定目标.
(defun compile-parent (command)
(interactive
(let* ((make-directory (locate-dominating-file (buffer-file-name)
"Makefile"))
(command (concat "make -k -C "
(shell-quote-argument make-directory))))
(list (compilation-read-command command))))
(compile command))
Run Code Online (Sandbox Code Playgroud)
您可能还想查看Projectile扩展,它提供了一种次要模式,可以通过VCS元数据或特定构建文件的存在来检测项目,还有几个命令可以从项目根目录开始工作,包括从项目projectile-compile运行的命令M-x compile根.