大多数Linux应用程序都是用以下方法编译的:

make
make install clean

根据我的理解,make命令接受构建目标的名称作为参数。例如,install通常是将一些文件复制到标准位置的目标,而clean是删除临时文件的目标。

但是如果没有指定参数(例如,我的例子中的第一个命令),什么目标将进行构建?


默认情况下,它首先处理第一个不是以属性开头的目标。也就是默认目标;要做到这一点,它可能必须处理其他目标——特别是第一个目标所依赖的目标。

GNU制作手册涵盖了所有这些内容,是一本令人惊讶的简单和信息丰富的读物。


GNU Make还允许您使用一个名为. default_goal的特殊变量指定默认的Make目标。您甚至可以在Makefile中间取消设置这个变量,从而使文件中的下一个目标成为默认目标。

参考:Gnu制作手册-特殊变量


为了节省别人几秒钟的时间,也为了让他们不必阅读手册,下面是简短的答案。把这个添加到make文件的顶部:

.DEFAULT_GOAL := mytarget

Mytarget现在将是如果执行“make”并且没有指定目标时运行的目标。

如果您使用的是较旧版本的make(<= 3.80),则这将不起作用。如果是这样,那么你可以做anon提到的,简单地添加到你的make文件的顶部:

.PHONY: default
default: mytarget ;

引用: https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html


bmake等价于GNU Make的.DEFAULT_GOAL是.MAIN:

$ cat Makefile
.MAIN: foo

all:
    @echo all

foo:
    @echo foo
$ bmake
foo

参见bmake(1)手册页。