메이크 파일에서 이스케이프


87

나는 makefile에서 이것을하려고하는데 끔찍하게 실패합니다.

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

왜 그런지 알아? 탈출과 관련이있는 것 같은데, 어디에서 무엇을할까요?


5
어떻게 실패합니까? 어떤 오류 메시지가 생성됩니까? 그것이 무엇을 기대합니까?

답변:


163

달러 기호입니다. 메이크 파일 $$에서 단일 달러 기호를 얻으려면 입력 해야합니다.

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

133
네, 돈을 버는 것은 돈 낭비입니다 $. 하나를 얻으려면 두 개 를 넣어야 합니다.
P Shved 2010 년

8
@PavelShved 한 번도 돈을 지불 한 적이 없습니다. :)
Trevor Hickey

이 답변을 검색의 일부로 찾는 사람에게는 댓글의 시작 부분으로 사용되는 '#'문자에도 문제가 있습니다. 이 경우 백 슬래시 "\ #"로 이스케이프해야합니다.
Jim Monte

16

당신이 그것에 내려갈 때 Make는 상당히리스 피합니다. 다음은 동일한 작업을 수행하는 awk가 아닌 버전입니다.

space := $() #

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

all:
    $(info $(M_ARCH))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.