Linux 在Makefile中没有默认目标是否不好

Linux 在Makefile中没有默认目标是否不好,linux,makefile,Linux,Makefile,这是一种不好的做法,比如: all: 在Makefile中,强制用户指定目标并忽略默认目标?all不一定是默认目标。默认目标是在makefile中定义的第一个目标。另外,如果您将空目标保留为默认目标(并且确保在makefile中的其他地方没有其他具有规则的all目标),make的行为可能有点令人费解。我建议让默认行为打印适当的错误消息,例如: error: @echo "Please choose one of the following target: compile, in

这是一种不好的做法,比如:

all:

在Makefile中,强制用户指定目标并忽略默认目标?

all
不一定是默认目标。默认目标是在makefile中定义的第一个目标。另外,如果您将空目标保留为默认目标(并且确保在makefile中的其他地方没有其他具有规则的
all
目标),
make
的行为可能有点令人费解。我建议让默认行为打印适当的错误消息,例如:

error:
        @echo "Please choose one of the following target: compile, install, uninstall"
        @# Alternatively: "Please RTFI(nstall)F(ile)"
        @exit 2

取决于您是否希望/需要强制用户指定目标。约定是默认目标为
all
(即,它是第一个指定的目标),并在不部署代码的情况下构建代码。不过,这不是一个有真正答案的问题。Make只是一个工具,如果你有很好的理由禁用默认目标,并且不认为它会激怒你的用户,那就做你喜欢的事情。我很惊讶地看到这个问题以没有建设性的方式结束。我来这里是为了寻找一种在Makefile中禁用隐式默认目标的最佳实践,因为我发现它是一个令人困惑的默认值。这个问题问得很明确,对我来说很有建设性,也许只是标题上的一个小改动。