2009-10-21 4 views
5

C'è un modo per rilevare se una variabile è stata impostata dall'ambiente o dalla riga di comando?Variabili del makefile dalla riga di comando rispetto all'ambiente

Vorrei distinguere tra qualcuno invocando fare con make LIB=mylib vs. make e $ LIB in fase di definizione.

+0

Per favore, tagga le domande relative alla tua arte con il tag [make]. Per informazioni, consulta http://meta.stackexchange.com/questions/24030/why-do-the-specify-makefile-tag-instead-of-make/26567#26567 –

risposta

5

Sì. È possibile utilizzare la funzione origin per determinare dove è stata definita una variabile.

 
ifneq (,$(findstring environment,$(origin LIB))) 
    # LIB was defined by the environment 
else 
    # LIB was defined some other way 
endif 
0

Con non-GNU Make, è possibile eseguire il comando export e grep per la variabile in questione. Funziona solo nelle regole e solo finché la variabile non è impostata come one-shot (come in LIB=foo make).