다음은 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"