我正在使用 gnu make,在我有的 Makefile 中,我看到以下规则。我想添加一个带有配方的类似规则,但是当我在下一行添加规则及其配方时,通过为配方提供制表符或空格,我得到了 make 错误。
dummy :
@echo $(OBJS)
当我打开 vim 命令 :set list 时,我看到:
dummy :$
^I@echo $(OBJS)$
菜谱行(第二行)之前的字符到底是什么,它们从行首开始缩进?
如何使用键盘输入它们(而不必复制粘贴现有规则然后修改它?
在哪里可以找到有关从头开始手动创建 Makefile 时使用的各种空格/缩进的信息(不是自动制作/或其他工具创建的 Makefile)?
答案1
答案2
从上面 DMA57361 给出的答案中挑选一些指针并进行一些摆弄之后,我注意到很久以前在我的 .vimrc 中我有这个命令 set expandtab
(它将制表符扩展为空格)并且我使用 vim。
这破坏了我在 Makefile 规则中输入的 Tab 字符。在 .vimrc 中注释该行很有帮助,对我来说很有效。
答案3
根据公认的答案:配方前面必须有一个字符,如果在 中启用,tab
则会自动替换该字符。不建议覆盖您的,因为这会破坏您下载的代码库中的 makefile。最简单的方法是简单地从您的配置中删除,但您可以通过添加以下行来解决这个问题set expandtab
.vimrc
.RECIPEPREFIX
set expandtab
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
。
expandtab
仅当您编辑 makefile 时才会禁用此功能。