Оболочка не может экспортировать вещи в ваш Makefile.Вместо этого попробуйте что-то вроде этого.
db := $(shell locate leveldb/db.h)
LEVELDB_PATH:=$(patsubst %/include/leveldb/db.h,%,$(db))
... или, чтобы сэкономить временную переменную,
LEVELDB_PATH:=$(shell locate leveldb/db.h | sed 's%/include/leveldb/db.h$$%%')
Редактировать : исправлено использование $(patsubst)
вместо$(subst)
и двойной знак доллара в сценарии sed
.
В общем, все, что происходит внутри $(shell ...)
, происходит в подпроцессе, который (как всегда) не может изменить своего родителя.make
видит выходные данные функции после ее завершения, но не то, что произошло во время выполнения команд оболочки.