ฉันพยายามทำสิ่งนี้ใน makefile และมันล้มเหลวอย่างมาก:
M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')
คุณรู้ไหมว่าทำไม? ฉันเดาว่ามันเกี่ยวข้องกับการหลบหนี แต่อะไรและที่ไหน?
ฉันพยายามทำสิ่งนี้ใน makefile และมันล้มเหลวอย่างมาก:
M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')
คุณรู้ไหมว่าทำไม? ฉันเดาว่ามันเกี่ยวข้องกับการหลบหนี แต่อะไรและที่ไหน?
คำตอบ:
มันคือเครื่องหมายดอลลาร์ใน makefiles คุณจะต้องพิมพ์$$
เพื่อรับเครื่องหมายดอลลาร์เดียว:
M_ARCH := $(shell g++ -dumpmachine | awk '{split($$1,a,"-");print a[1]}')
$
เพื่อให้ได้หนึ่ง
ทำให้ค่อนข้างน่าเบื่อเมื่อคุณลงไป นี่คือเวอร์ชันที่ไม่ใช่ Awk ที่ทำสิ่งเดียวกัน:
space := $() #
M_ARCH := $(firstword $(subst -,$(space),$(shell g++ -dumpmachine)))
all:
$(info $(M_ARCH))