2010-03-04 11 views
56

Staram się robić to w makefile i nie jest on strasznie:Uciekając w makefile

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

wiesz dlaczego? Chyba ma to związek z ucieczką, ale co i gdzie?

+4

Jak to się nie udaje? Jakie komunikaty o błędach to powoduje? Czego oczekujesz od tego? –

Odpowiedz

116

To znak dolara, w makefile musisz wpisać $$ uzyskać pojedynczy znak dolara:

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

Tak, marka jest totalną stratą pieniędzy: musisz umieścić dwa '$', aby ją zdobyć. –

+6

@PavelShved Nigdy nie zapłaciłem za markę. :) –

13

Producent jest dość lispy kiedy się do niego. Oto wersja nie-awk, która robi to samo:

space := $() # 

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

all: 
    $(info $(M_ARCH))