GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo se puede usar la función eval en makefile?

La forma más fácil de entenderlo es reemplazar la evaluación con información:

$(info $(call func, foo, 1.c))

Eso mostrará como salida el resultado de la primera expansión, para que pueda ver qué marca realmente analizará. No proporcionó los valores para la variable OBJPATH, pero si fuera obj por ejemplo, en su caso, la primera expansión (de la función de llamada) da como resultado:

tmp = obj/foo
objs += $(tmp)
$(tmp) : 1.c
    gcc $^ -o [email protected]

Luego, el analizador make evaluará esto y, en el proceso, lo expandirá nuevamente, por lo que cosas como $(tmp) se expanden.


Esto ha sido un problema para mí, pero encontré una buena solución. En mi caso, estaba relacionado con el inicio de sesión de AWS Docker. Tenía en mi script de shell anteriormente:

eval $(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)

pero al poner eso en Makefile no funcionó La solución para esto es cambiar la línea a:

$$(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)


Linux
  1. ¿Cómo puedo obtener lo que ha devuelto mi función principal?

  2. ¿Cómo obtener el estado de salida de un comando de shell utilizado en GNU Makefile?

  3. ¿Cómo puedo observar el ancho de banda de la memoria?

  4. ¿Cómo puedo actualizar pip en Ubuntu 10.04?

  5. ¿Cómo puedo ordenar la salida du -h por tamaño?

C++ 11:¿Cómo crear un alias de una función?

Cómo incluir una biblioteca estática en un archivo MAKE

¿Cómo puede una biblioteca compartida (.so) llamar a una función que está implementada en su programa de carga?

¿Cómo puedo verificar qué ocupa espacio en disco en /tmp?

¿Cómo puedo monitorear el disco io?

¿Cómo puedo detener ZooKeeper en Ubuntu?