在make
中(我正在使用OpenBSD的实现,但我想这个问题也与GNU make有关),我们有以下所谓的 local variables
@ The name of the target
% The name of the archive member (for library rules)
! The name of the archive file (for library rules)
? The list of prerequisites for this target that were deemed out of date
< The name of the prerequisite from which this target is to be built (for inference rules)
* The file prefix of the file, containing only the file portion, no suffix or preceding directory components
(大约来自OpenBSD上的man make
)
这些局部变量具有同义词:例如,.IMPSRC
代表<
或.TARGET
代表@
。 FreeBSD的手册说这些较长的版本是首选。 OpenBSD的手册页中没有提及此类内容,但是说这些较长的名称是扩展名。
使用更长的名称更好吗?哪个更好的兼容性?都是POSIX吗?
答案 0 :(得分:2)
这些变量在GNU make中称为automatic variables,在POSIX标准中称为内部变量。
这些名称的简称纯粹是BSD make发明,在其他版本的make(例如GNU make)中都不存在,并且在POSIX standard for make中未提及。
是否要使用它们取决于您,但是它们完全不可携带。当然,如果要实现兼容性层,则始终可以自己定义它们。