Depende del sabor de la marca. Con GNU Make, puede utilizar :=
en lugar de =
como en
TMP:=$(shell mktemp -d /tmp/.XXXXX)
Editar Como ha señalado Novelocrat, la asignación =
difiere de :=
asignación en que los valores asignados utilizando =
será evaluado durante la sustitución (y por lo tanto , cada vez, se usa la variable), mientras que las variables asignadas :=
tendrán sus valores evaluados solo una vez (durante la asignación), y por lo tanto, los valores se fijarán después de eso. Consulte el documentation de GNU Make para obtener una explicación más detallada.
Para que el valor sea realmente constante después de la asignación, no debe contener ninguna parte, que podría ser especial para el shell (que make
llama para ejecutar realmente las reglas de actualización, etc.) En particular , es mejor evitar los backticks. En su lugar, utilice la función de shell incorporada de GNU make
y similar para lograr sus objetivos.
Las variables asignadas con '=' se evalúan en cada sustitución. Las variables asignadas con ': =' se evalúan en la asignación, como usted desee. – Novelocrat
Hola Dirk, Parece que no funciona: http://pastie.org/619606 ¿Hay algún error de sintaxis en mi Makefile? Gracias – abernier
Respuesta editada de nuevo. Creo que el problema es el uso de los backticks; para make, el valor (incluidos los backticks) es esencialmente "constante" y se pegará como está en el punto de uso, y luego, los backticks serán vistos por el shell en cada punto de uso. Solo una teoría, sin embargo. – Dirk