在 Makefile 中,我们使用 'prefix' 还是 'PREFIX'?

6

目前在我的Makefile中,我有:

prefix ?= /usr/local

在调用make时,我希望能够覆盖prefix的值,就像下面这样:

make prefix="/new_path"

我的问题是:在Makefile中是否存在命名此变量的约定,特别是我必须称其为prefix还是PREFIX
这很重要,因为在这种情况下大小写是有区别的!
请注意,我没有使用autotools,只是一个“简单”的Makefile

2
我不知道是否有一个确定的答案。我个人偏好于在变量表示可以被用户覆盖时使用大写,而在表示不可更改的内部变量时使用小写。 - Noufal Ibrahim
@noufal 感谢您的解释。因此,我将在我的情况下使用 PREFIX(因为可以被覆盖)。遗憾的是,我没有找到关于这些约定的文档(即使它们不是完全固定的)... - prodev_paris
1
这是我会做的,但这只是我的个人惯例。 - Noufal Ibrahim
哇,我很惊讶这个五年前的问题仍然没有一个明确的答案。 - domsson
1个回答

7
GNU make手册中安装目录变量部分讨论了prefix
我相信autotools使用类似大小写的prefix变量/configure标志。
然而,与之相比,DESTDIR有所不同。

@ethan 谢谢你提供的文档,但是我已经阅读过了,却没有找到关于我的具体问题的线索... - prodev_paris
1
普遍的共识(在GNU make和autotools之间)是使用“prefix”。我加入了关于“DESTDIR”的部分,只是为了表明它们也使用“ALL_CAP”变量,但我不知道具体原因。如果在其他地方(bsd等)没有关于“PREFIX”的共识,那么这似乎表明您应该使用“prefix”。这就是我发布这些信息的原因。我无法给出比这更具体/明确的答案。 - Etan Reisner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接