Есть ли способ определить, была ли переменная задана из среды или в командной строке?Переменные Makefile из командной строки и среды
Я хотел бы провести различие между тем, кто вызывает make с make LIB=mylib
против make
и определяется $ LIB.
Есть ли способ определить, была ли переменная задана из среды или в командной строке?Переменные Makefile из командной строки и среды
Я хотел бы провести различие между тем, кто вызывает make с make LIB=mylib
против make
и определяется $ LIB.
Да. Вы можете использовать функцию origin, чтобы определить, где была определена переменная.
ifneq (,$(findstring environment,$(origin LIB))) # LIB was defined by the environment else # LIB was defined some other way endif
С не-Гну сделать, вы можете запустить команду export
и grep
переменной в вопросе. Это работает только в правилах и только до тех пор, пока переменная не будет установлена как однократная (например, в LIB=foo make
).
Пожалуйста, отметьте ваши вопросы, связанные с make, с помощью тега [make]. Для обоснования см. Http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 –