$(RM)
est une référence à une variable de type "make" (ou macro dans le jargon POSIX). Il existe deux types de syntaxe, avec une sémantique identique : $(NAME)
et ${NAME}
(et il existe des macros d'une lettre qui ne nécessitent pas de parenthèses, telles que $a
).
POSIX spécifie de nombreuses variables, errrrr, macros pour avoir un défaut :
MAKE=make
AR=ar
ARFLAGS=-rv
YACC=yacc
YFLAGS=
LEX=lex
LFLAGS=
LDFLAGS=
CC=c99
CFLAGS=-O 1
FC=fort77
FFLAGS=-O 1
GET=get
GFLAGS=
SCCSFLAGS=
SCCSGETFLAGS=-s
C'est intéressant, RM
n'en fait pas partie. La valeur par défaut de l'option RM
dans votre implémentation de make est apparemment rm -f
(et votre make fonctionne en mode non-POSIX par défaut).
Notez que si $(PWD)
a la même syntaxe qu'une substitution de commande shell (et ${PWD}
la même chose qu'un paramètre shell), ce sont des choses complètement différentes. Pour répondre à votre question, non, vous ne pouvez pas vous attendre à ce que $(PWD)
comme une macro "make" pour exécuter le pwd
ou développer dans le répertoire de travail actuel. Une macro indéfinie sera développée en une chaîne vide sans que "make" n'ait à sourciller.