makefile 변수에서 후행 공백을 제거하는 방법은 무엇입니까?

makefile 변수에서 후행 공백을 제거하는 방법은 무엇입니까?

Makefile에서는 변수 값을 바인딩하는 데 따옴표가 필요하지 않습니다.

예를 들어 다음과 같이 허용됩니다.

a := ls -l -a > out.txt

내 질문은 다음과 같습니다.

a := ls -l -a > out
b := .txt
c := $(a)$(b)

변수 $(a) ​​​​줄 끝에 공백이 있으면 변수 $(c)는 다음과 같습니다.

ls -l -a > out .txt 

그 뒤에 공백이 있습니다 out!

이로 인해 오류가 발생할 수 있습니다.

모든 makefile 변수 값에서 후행 공백을 전체적으로 무시하는 방법이 있습니까?

답변1

아니요, make가 변수 정의를 구문 분석하는 방식을 변경할 수 있는 방법은 없습니다. 변수가 정의된 지점을 변경할 수 없는 경우 해당 변수가 사용되는 지점을 변경해야 합니다.

GNU make를 사용하고 변수 값 안에 공백이 없어야 한다면 다음을 사용할 수 있습니다.strip기능.

c := $(strip $(a))$(strip $(b))

답변2

공백은 줄 끝에 있지 않습니다. 공백은 .txt 앞에 있습니다.

이것은 잘 작동합니다:

a:= ls -l -a >out
b:=.txt
c:=$(a)$(b)

all:
    @echo ${c}

모든 종류의 텍스트 처리 기능을 사용할 수도 있습니다. 하지만 "공백의 일정량(또는 공백 부족)"에 종속되게 만드는 것은 일반적으로 "나쁜" 것입니다.

답변3

그 후에도 아직 여유가 있습니다 out. Variable 끝의 공백을 제거하는 것과 같은 문제가 발생했습니다 a.

관련 정보