在Makefile中没有默认目标是否有问题?

11

像这样有这样的东西是不好的做法吗:

all:

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

2
取决于您是否想/需要强制用户指定目标。约定是默认目标为“all”(即第一个指定的目标),并构建代码而不部署它。但这不是一个有实际答案的问题。 - Anya Shenanigans
1
Make只是一个工具,如果你有充分的理由禁用默认目标,并且不认为这会让用户感到困扰,那就按照你自己的喜好去做吧。 - blueshift
2
我很惊讶看到这个问题被关闭,理由是不具有建设性。我来到这里是为了寻求在我的Makefile中禁用隐式默认目标的最佳实践,因为我发现它是一个令人困惑的默认设置。这个问题明确地提出了这个问题,并且对我来说非常有建设性,也许标题需要稍作修改。 - Taylor D. Edmiston
1个回答

20

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接