makefile - makefile 中的命令前面有反斜杠

标签 makefile

在 makefile 中的命令前添加反斜杠有什么作用?

例如本例中的 \rm 命令:

# LaTeX Makefile
FILE=report

all: $(FILE).pdf

.PHONY: clean
clean:
\rm *.aux *.blg *.out *.bbl *.log

$(FILE).pdf: $(FILE).tex
pdflatex $(FILE)
pdflatex $(FILE)
bibtex $(FILE)
pdflatex $(FILE)
pdflatex $(FILE)

最佳答案

这不是必需的,但也没有什么坏处。配方中的反斜杠(除非它们位于行尾)并不有趣,因此它们只是传递给 shell。 shell 会发现反斜杠之后的下一个字符 (r) 不是特殊字符,因此它会忽略反斜杠。

通常人们在 shell 命令之前使用反斜杠,以确保不使用 shell 别名:反斜杠禁止别名查找:

$ alias foo='echo bar'
$ foo
bar
$ \foo
foo: command not found

但是,在 makefile 中不需要这样做,因为 make 使用 /bin/sh 作为非交互式 shell 调用所有配方,因此这些别名通常不可用。

关于makefile - makefile 中的命令前面有反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42661171/

相关文章:

找不到 linux/modversions.h

linux - 如何制作 'makefile"?编译错误

c++ - Makefile:创建构建目录

c++ - Windows 的 native Makefile 替代品

linux - 在远程Linux服务器上运行本地GCC

linux - 使用 "-fPIC"标志编译可执行文件(无共享库)

c++ - 使用 makefile 有什么好的理由吗?

c++ - Net-SNMP - 在新的 MIB 模块中编译,而不编译整个 SNMP 代理

makefile - 如何理解这个 Go makefile?

c++ - 编译错误(g++ 和 make)