Makefile'da kaçmak


88

Bunu bir makefile'da yapmaya çalışıyorum ve korkunç bir şekilde başarısız oluyor:

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

neden biliyor musun? Sanırım bunun kaçışla ilgisi var, ama ne ve nerede?


5
Nasıl başarısız olur? Hangi hata mesajlarını üretir? Ne yapmasını bekliyorsunuz?

Yanıtlar:


164

Dolar işaretidir, makefiles'da $$tek bir dolar işareti almak için yazmanız gerekir:

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

133
Evet, kazanmak tam bir para israfıdır: $Bir tane almak için iki tane koymanız gerekir .
P Shved

8
@PavelShved Bir kez olsun para ödemedim. :)
Trevor Hickey

Bu yanıtı bir aramanın parçası olarak bulan herkes için, yorumların başlangıcı olarak alınan '#' karakterleriyle ilgili sorunlar da vardır. Bunlar için, ters eğik çizgi ile kaçmalısınız: "\ #".
Jim Monte

16

Aşağı indiğinde Make oldukça peltek oluyor. İşte aynı şeyi yapan, awk olmayan bir sürüm:

space := $() #

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

all:
    $(info $(M_ARCH))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.