【发布时间】:2019-02-21 00:13:10
【问题描述】:
我知道make 如果在没有任何参数的情况下调用,通常会执行第一个目标。但是如果第一个目标是模式规则会发生什么?我这里有一个 Makefile,如下所示:
%.o: %.cc
gcc -c -o $@ $<
main: main.o helper.o
gcc main.o helper.o -o $@
根据我对make 的理解,在这种情况下,仅在不带任何参数的情况下调用它可能会导致某种错误,因为据我所知,第一个目标始终是默认目标,不会使感觉 make 是否没有给出任何参数。但是当我用这个 Makefile 调用 make 时,它会构建 main 目标(当然,递归目标 main.o 和 helper.o 也是如此)。
那么,make 在查找第一个目标时会忽略模式规则总是是真的吗?将那些真正想成为默认目标的人放在目标前面是否被认为是一种不好的风格?在我看来,这有点令人困惑。
【问题讨论】:
-
In my opinion, this is somehow confusing您可以使用.DEFAULT_GOAL:=target_name明确设置默认规则。