在 Makefile 中,使用 shell 命令需要特别注意,因为 Makefile 的语法与 shell 脚本的语法有一些不同。您所提供的代码片段可以正常工作,但需要确保命令在适当的规则中定义,并且是以 $(SHELL)
执行的。
这里是一个正确示例:
.PHONY: all prepare
all:
@if [ ! -d nginx ]; then \
echo "Directory 'nginx' does not exist. Running prepare..."; \
make prepare; \
fi
prepare:
@echo "Preparing the nginx directory..."
mkdir -p nginx
说明:
@
符号用于在执行时不打印命令。- 使用
if
语句时,整个条件判断和相应的操作必须放在同一行内,如果分为多行,则每行必须以反斜杠 (\
) 结尾。 - 使用
.PHONY
来标记伪目标,以确保它们总是被执行。
确保将此代码保存到您的 Makefile 中,然后运行 make all
以测试该逻辑。
内容由零声教学AI助手提供,问题来源于学员提问