2009-10-21 16 views
5

Czy istnieje sposób na sprawdzenie, czy zmienna została ustawiona ze środowiska, a nie z wiersza poleceń?Zmienne Makefile z wiersza poleceń a środowisko

Chciałbym odróżnić osobę, która wywołuje markę, z make LIB=mylib w porównaniu z make i definicją LIB.

+0

Proszę oznaczyć swoje pytania związane z produkcją tagiem [make]. Aby uzyskać uzasadnienie, zobacz http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 –

Odpowiedz

5

Tak. Możesz użyć funkcji origin, aby określić, gdzie zdefiniowano zmienną.

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

Z non-gnu zrobić, można uruchomić komendę export i grep dla zmiennej w pytaniu. Działa to tylko w regułach i dopóki zmienna nie jest ustawiona jako jednorazowa (jak w LIB=foo make).

Powiązane problemy