3
這看起來像是一個顯而易見的黑客,我討厭自己寫,但我沒有找到它的運氣。emacs編譯命令在上級目錄中找到makefile
我想要一個M-x compile
的方法,它將在目錄樹中從cwd向上搜索到帶有Makefile的第一個目錄,然後運行make命令。因此,它基本上
- 如果./Makefile存在,運行make命令
- 否則,
cd ..
和$HOME
再試
停止。
這看起來像是一個顯而易見的黑客,我討厭自己寫,但我沒有找到它的運氣。emacs編譯命令在上級目錄中找到makefile
我想要一個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))
你可能也想看看Projectile擴展,它提供了一個較小的模式通過VCS元數據或特定構建文件的存在,檢測項目,有幾個命令,從項目的根目錄下工作,其中包括projectile-compile
命令,它從項目根目錄運行M-x compile
。
Uagh。 'locate-dominating-file'是我*幾乎記得的東西。謝謝。 –