谈到GNU make,PHONY目标all:与之间的区别是什么default:.
CC=g++
default: hello
hello: hello.cpp
$(CC) -o hello hello.cpp
Run Code Online (Sandbox Code Playgroud)
和
CC=g++
all: hello
hello: hello.cpp
$(CC) -o hello hello.cpp
Run Code Online (Sandbox Code Playgroud)
他们俩都做同样的工作.
tri*_*eee 23
shirley如果你愿意,你可以打电话给他们; 你提到的标签都没有任何特殊的语义.如果未将目标指定为命令行参数,make则默认行为是运行第一个目标Makefile.如果您想覆盖此行为,则会有.DEFAULT:特殊目标.
有一个约定命名的目标all,它构建了所有东西,但这只是人类约定,而不是特殊情况或要求,就Make而言.
类似地,有一个(弱)约定来调用默认目标default,但同样地,这只是一个人类标签(并且有些重叠并且可能与all约定冲突).
所以下面的Makefile完全相同:
.PHONY: shirley all default
default: hello
all: hello
shirley: hello
hello: hello.cpp
# (Make already knows how to build an executable out of a .cpp file)
Run Code Online (Sandbox Code Playgroud)
你可以省略上面的任何或所有虚假目标,唯一的区别是人类无法说出make shirley他们(有效)的意思make hello.
底线:构建您的Makefile,以便在make没有读取太多README文件或检查文件的情况下完成合理的最终用户期望Makefile.通常情况下make all(你应该有一个这个名字的目标,只是为了满足人类惯例,即使它不是默认值),但这显然取决于你的项目和用户的期望.
不要叫我雪莉.
| 归档时间: |
|
| 查看次数: |
12117 次 |
| 最近记录: |