Lo siguiente funciona en un shell bash
cp abc.tex "abc-$(date +"%Y-%m-%-d-%H-%M-%S").tex"
pero no en un archivo MAKE. ¿Cómo lo soluciono?
Aquí está el archivo MAKE:
b:
cp abc.tex "abc-$(date +"%Y-%m-%-d-%H-%M-%S").tex"
Cuando hago "hacer b", bash dice:
cp abc.tex "abc-.tex"
Respuesta1
En un Makefile, $(...)
denota la expansión de una variable de varios caracteres make
. No tiene una make
variable llamada date +"%Y-%m-%-d-%H-%M-%S"
, por lo que se reemplaza por una cadena vacía.
Para permitir que el shell que make
usa se ejecute $(...)
como sustitución de comando, escríbalo como $$(...)
:
b:
cp abc.tex "abc-$$(date +"%Y-%m-%-d-%H-%M-%S").tex"
La make
variante GNU de make
también $(shell ...)
funciona de manera similar a una sustitución de comando en el shell.
Respuesta2
Quizás estés buscando la $(shell ...)
macro.
b:
cp abc.tex "abc-$(shell date +"%Y-%m-%-d-%H-%M-%S").tex"
Esto genera el siguiente resultado
> make b
cp abc.tex "abc-2021-10-21-16-54-02.tex"