这似乎是一个非常明显的黑客,我讨厌自己写,但我找不到运气。
我希望M-x compile
方法能够在目录树中从 cwd 向上搜索到带有Makefile的第一个目录,然后运行make命令。所以,它基本上是
cd ..
再试一次停在$HOME
。
答案 0 :(得分:6)
以下代码定义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))
您可能还想查看Projectile扩展,它提供了一种次要模式,可以通过存在VCS元数据或特定构建文件来检测项目,并且可以从项目根目录中使用多个命令,包括projectile-compile
命令,从项目根目录运行M-x compile
。