bash 쉘에서 다음 작업이 수행됩니다.
cp abc.tex "abc-$(date +"%Y-%m-%-d-%H-%M-%S").tex"
하지만 makefile에는 없습니다. 어떻게 해결할 수 있나요?
생성된 파일은 다음과 같습니다.
b:
cp abc.tex "abc-$(date +"%Y-%m-%-d-%H-%M-%S").tex"
"make b"를 실행하면 bash는 다음과 같이 말합니다.
cp abc.tex "abc-.tex"
답변1
Makefile에서 $(...)
다중 문자 변수의 확장을 나타냅니다 make
. make
라는 변수 가 없으므로 date +"%Y-%m-%-d-%H-%M-%S"
빈 문자열로 대체됩니다.
make
$(...)
쉘 사용을 명령 대체로 실행하려면 다음과 같이 작성하십시오 $$(...)
.
b:
cp abc.tex "abc-$$(date +"%Y-%m-%-d-%H-%M-%S").tex"
GNU make
변형은 셸의 명령 대체와 유사하게 작동합니다 make
.$(shell ...)
답변2
어쩌면 매크로를 찾고 있을 수도 있습니다 $(shell ...)
.
b:
cp abc.tex "abc-$(shell date +"%Y-%m-%-d-%H-%M-%S").tex"
그러면 다음과 같은 출력이 생성됩니다.
> make b
cp abc.tex "abc-2021-10-21-16-54-02.tex"