1

如果我只输入

$ make

它将make使用默认目标调用命令(通常是 中指定的第一个目标Makefile,但规则比这更复杂一些)。

有没有办法在命令行上指定默认目标而不知道它是什么,而不是简单地省略目标名称?

我想做的是结合这两个命令:

$ make clean
$ make

一次调用make. 如果我碰巧知道默认目标是all,我可以输入:

$ make clean all

但如果我不知道默认目标是什么,那将不起作用。

理想情况下,我想要一些引用默认目标的语法(GNU make 手册将其称为“默认目标”)。这:

 $ make clean .DEFAULT_GOAL

显示了一般的想法,但它不起作用。

第二好的方法是从命令行确定默认目标是什么的简单而可靠的方法:

$ make clean $(get-default-target)

一个特定于 GNU 的解决方案就可以了。

我怀疑,通过快速浏览手册,没有好的方法可以做到这一点。

4

1 回答 1

1

对于次优解决方案,您可以从 make -pq 的输出中解析默认目标:

make -pq  | sed -ne 's/^.DEFAULT_GOAL := //p'
于 2013-01-30T20:32:27.980 回答