2010-03-04 12 views
56

che sto cercando di fare questo in un makefile e viene a mancare terribilmente:Fuggire in makefile

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

sapete perché? Immagino che abbia a che fare con la fuga, ma che cosa e dove?

+4

Come fa a non funzionare? Che messaggi di errore produce? Cosa ti aspetti che faccia? –

risposta

116

E 'il simbolo del dollaro, in makefile dovrete digitare $$ per ottenere un unico simbolo del dollaro:

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

Sì, fare è uno spreco totale di denaro: devi mettere due '$' per ottenerne uno. –

+6

@PavelShved Non ho mai pagato per make. :) –

13

fanno è abbastanza lispy quando si arriva al dunque. Ecco una versione non-awk che fa la stessa cosa:

space := $() # 

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

all: 
    $(info $(M_ARCH))