gpt4 book ai didi

Makefile:所有与默认目标

转载 作者:行者123 更新时间:2023-12-04 02:41:57 30 4
gpt4 key购买 nike

谈到 GNU make,PHONY 目标之间有什么区别 all:default: .

CC=g++
default: hello

hello: hello.cpp
$(CC) -o hello hello.cpp


CC=g++
all: hello

hello: hello.cpp
$(CC) -o hello hello.cpp

他们都做同样的工作。

最佳答案

你可以调用他们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)

你可以省略上面的任何或所有虚假目标,唯一的区别是人类不能说 make shirley当它们(实际上)意味着 make hello .

底线:构建您的 Makefile,以便 make无需阅读太多即可满足合理的最终用户的期望 README文件或检查 Makefile .通常是 make all (并且您可能应该有一个具有此名称的目标,只是为了满足人类约定,即使它不是默认值)但这显然取决于您的项目和用户的期望。

不要叫我雪莉。

关于Makefile:所有与默认目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27242905/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com