89 votes

S'échapper dans le makefile

J'essaie de faire cela dans un fichier makefile et cela échoue terriblement:

 M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')
 

est-ce que tu sais pourquoi? Je suppose que cela a à voir avec l'évasion, mais quoi et où?

167voto

Martin Points 13951

C'est le signe dollar. Dans les makefiles, vous devrez taper $$ pour obtenir un seul signe dollar:

 M_ARCH := $(shell g++ -dumpmachine | awk '{split($$1,a,"-");print a[1]}')
 

16voto

richq Points 29694

Make est assez lispy quand vous y arrivez. Voici une version non-awk qui fait la même chose:

 space := $() #

M_ARCH := $(firstword $(subst -,$(space),$(shell g++ -dumpmachine)))

all:
    $(info $(M_ARCH))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X