如果没有指定目标,“make”应用程序如何知道要构建的默认目标?

问题描述 投票:0回答:5

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

make
make install clean

据我了解,

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

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

    

makefile
5个回答
326
投票
make

又名

默认目标
开头的第一个目标;为此,它可能必须处理其他目标 - 具体来说,第一个目标所依赖的目标。

GNU Make 手册

涵盖了所有这些内容,并且是一本令人惊讶的简单且信息丰富的读物。


311
投票

.

mytarget 现在将是如果执行“make”且未指定目标则运行的目标。

如果您有旧版本的 make (

.DEFAULT_GOAL := mytarget <= 3.80), this won't work. If this is the case, then you can do what anon mentions, simply add this to the top of your make file:

参考资料:
https://www.gnu.org/software/make/manual/html_node/How-Make-Works.html


47
投票
.PHONY: default default: mytarget ;

的特殊变量来指定默认的 make 目标。您甚至可以在 Makefile 中间取消设置此变量,使文件中的下一个目标成为默认目标。


参考:

Gnu Make 手册 - 特殊变量


1
投票
.DEFAULT_GOAL

.DEFAULT_GOAL
:
.MAIN

请参阅 
bmake(1) 手册页


0
投票
奔跑

default: install help: @echo 'Welcome!' install: @echo 'Installing deps...'

© www.soinside.com 2019 - 2024. All rights reserved.