Make
使用日期時間將文件複製到文件名在 bash 中有效,但在 makefile 中無效
以下在 bash shell 中工作
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"
在 Makefile 中,
$(...)
表示多字元make
變數的擴展。您沒有make
名為 的變數date +"%Y-%m-%-d-%H-%M-%S"
,因此將其替換為空字元串。
make
要讓使用 execute$(...)
作為命令替換的 shell,請將其寫為$$(...)
:b: cp abc.tex "abc-$$(date +"%Y-%m-%-d-%H-%M-%S").tex"
的 GNU
make
變體make
也具有$(shell ...)
與 shell 中的命令替換類似的工作方式。
也許您正在尋找
$(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"