我正在使用 gnu make 並在我的 Makefile 中看到以下規則。我想使用食譜添加類似的規則,但是當我通過為食譜提供製表符或空格來在下一行添加規則及其收據時,我會出現錯誤。
dummy :
@echo $(OBJS)
當我打開 vim 命令 :set list 時,我看到:
dummy :$
^I@echo $(OBJS)$
配方行(第二行)之前從行首縮排的字元到底是什麼?
如何使用鍵盤輸入它們(無需複製貼上現有規則然後修改它?
我可以在哪裡找到用於從頭開始手動建立 Makefile 的各種空格/縮排的資訊(不是 automake/或其他工具建立的 makefile)?
答案1
答案2
從上面 DMA57361 給出的答案中挑選了一些指針,並進行了一些更多的擺弄之後,我注意到很久以前在我的 .vimrc 中我有這個命令 set expandtab
(它將製表符擴展到空格)並且我使用vim。
這破壞了我在 Makefile 規則中輸入的製表符。在 .vimrc 中評論該行有幫助並且對我有用。
答案3
根據公認的答案:食譜前面必須有一個tab
字符,如果set expandtab
在您的.vimrc
..RECIPEPREFIX
不建議覆蓋您的文件,因為這會破壞您下載的程式碼庫中的 makefile。天真的方法是簡單地set expandtab
從配置中刪除,但您可以透過新增行來解決這個問題
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
。
expandtab
僅當您編輯 makefile 時此功能才會停用。