![Makefile에서 cat을 사용하여 생성된 변수에서 문자열 교체를 수행하는 방법은 무엇입니까?](https://linux55.com/image/174460/Makefile%EC%97%90%EC%84%9C%20cat%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%83%9D%EC%84%B1%EB%90%9C%20%EB%B3%80%EC%88%98%EC%97%90%EC%84%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EA%B5%90%EC%B2%B4%EB%A5%BC%20%EC%88%98%ED%96%89%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
파일 내용을 기반으로 일부 변수를 할당하고 파일 내용에 대한 문자열 대체를 수행하여 새 변수를 정의하려고 합니다.
.file-a
내 프로젝트 디렉토리에 다음 내용이 포함된 파일이 있습니다 .
foo-bar
내 Makefile
모습은 다음과 같습니다.
FILE_A_NAME := .file-a
FILE_A_CONTENTS := `cat $(FILE_A_NAME)`
NEW_VAR := $(subst -,_, $(FILE_A_CONTENTS))
.PHONY: foo
foo:
@echo $(NEW_VAR)
make foo
echo 하고 싶지만 foo_bar
대신 다음과 같은 결과를 얻습니다.
cat: .file_a: No such file or directory
NEW_VAR
교체가 이루어지고 있는 것 같습니다 FILE_A_NAME
. 교체 작업을 수행하려면 어떻게 해야 합니까 FILE_A_CONTENTS
?
답변1
shell
다음을 실행하려면 이 함수를 사용해야 합니다 cat
.
FILE_A_CONTENTS := $(shell cat $(FILE_A_NAME))