2011-05-17 14 views
21

Tengo el siguiente código en mi archivo MAKE:variable de impresión desde dentro Makefile

S_RES=$(shell cat output) 

echo -e "Serial result = \t" $(S_RES) 

Básicamente, quiero almacenar la salida del comando shell cat output en la variable S_RES y, a continuación, repetir esa variable a la pantalla (con un texto explicativo delante) También quiero poder usar la variable más adelante en mi programa. Pensé que había seguido las instrucciones dadas en varias preguntas de StackOverflow, pero parece que no funciona.

Respuesta

41

Si se permite sencilla espacio en lugar de la secuencia de escape \t, y su make es GNU make 3,81 o superior, $(info) está disponible.
Por ejemplo:

$(info Serial result = $(S_RES)) 

Si la versión de sus make 's es 3.80 o inferior, $(warning) podría cumplir con el propósito . Sin embargo, warning imprime el número de línea, etc. también.

EDIT: Para su información, las siguientes salidas makefile abc en mi GNU hacen 3,81.

A := $(shell echo abc) 
$(info $(A)) 
+0

Desafortunadamente eso no parece funcionar. Obtengo 'Serial result =' impreso, pero no el valor de S_RES. Supongo que estoy configurando S_RES correctamente en primer lugar, ¿es correcto? – robintw

+0

¿Tu 'make'' GNU-make'? Si es así, ¿cuál es la versión? Por favor, vea la edición. –

+0

me sale el siguiente resultado: A: = abc marca: A: Comando no encontrado make: *** [test] Error 127 Y mi versión de make es GNU Make 3.81 – robintw

5

sólo una nota al margen

este evalúa el tiempo de uso, esto es tantas veces como $ (A) se utiliza

A = something 

este evalúa el tiempo de análisis, por lo tanto el valor es evalúa una vez

A := something 
Cuestiones relacionadas