
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"
GNUmake
バリアントはシェルのコマンド置換と同様に機能します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"