2009-10-21 3 views
5

Есть ли способ определить, была ли переменная задана из среды или в командной строке?Переменные Makefile из командной строки и среды

Я хотел бы провести различие между тем, кто вызывает make с make LIB=mylib против make и определяется $ LIB.

+0

Пожалуйста, отметьте ваши вопросы, связанные с make, с помощью тега [make]. Для обоснования см. Http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 –

ответ

5

Да. Вы можете использовать функцию origin, чтобы определить, где была определена переменная.

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

С не-Гну сделать, вы можете запустить команду export и grep переменной в вопросе. Это работает только в правилах и только до тех пор, пока переменная не будет установлена ​​как однократная (например, в LIB=foo make).

Смежные вопросы