日付/時刻を使用したファイル名へのファイルのコピーはbashでは機能しますが、makefileでは機能しません。

日付/時刻を使用したファイル名へのファイルのコピーはbashでは機能しますが、makefileでは機能しません。

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内の$(...)複数文字変数の拡張を表しますmakemakeという変数がないため、date +"%Y-%m-%-d-%H-%M-%S"空の文字列に置き換えられます。

make$(...)シェルの使用をコマンドの代わりに実行するには、次のように作成します$$(...)

b:
        cp abc.tex "abc-$$(date +"%Y-%m-%-d-%H-%M-%S").tex"

GNUmakeバリアントはシェルのコマンド置換と同様に機能しますmake$(shell ...)

おすすめ記事