GNU/Linux >> Linux Esercitazione >  >> Linux

Come può essere utilizzata la funzione eval nel makefile?

Il modo più semplice per capirlo è sostituire eval con info:

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

Ciò visualizzerà come output il risultato della prima espansione, in modo da poter vedere quale marca verrà effettivamente analizzata. Non hai fornito i valori per la variabile OBJPATH, ma se fosse obj per esempio, allora nel tuo caso la prima espansione (della funzione di chiamata) risulta in:

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

Quindi il make parser lo valuterà e nel processo lo espanderà di nuovo, quindi cose come $(tmp) sono espansi.


Questo è stato un problema per me, ma ho trovato una bella soluzione alternativa. Nel mio caso era correlato all'accesso docker AWS. In precedenza avevo nel mio script di shell:

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

ma quando lo metti in Makefile non ha funzionato. La soluzione per questo è cambiare la linea in:

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


Linux
  1. Come differire l'espansione variabile?

  2. Come sostituire un dispositivo Btrfs guasto

  3. Come dovrebbe essere usato lo strace?

  4. Come posso collegare simbolicamente un file in Linux?

  5. Come posso ottenere ciò che la mia funzione principale ha restituito?

Come posso osservare la larghezza di banda della memoria?

Come posso aggiornare pip su Ubuntu 10.04?

Come posso monitorare il disco io?

Come posso ordinare du -h output per dimensione

Come modificare /tmp predefinito in /home/user/tmp

Come posso fermare ZooKeeper su Ubuntu?