![makefile 변수에서 후행 공백을 제거하는 방법은 무엇입니까?](https://linux55.com/image/86177/makefile%20%EB%B3%80%EC%88%98%EC%97%90%EC%84%9C%20%ED%9B%84%ED%96%89%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
.