#makefile
#makefile
Вопрос:
Я хочу, чтобы мой Makefile требовал указания среды, например
make ENV=beta all
Мой Makefile начинается так
ifeq ($(findstring ${ENV}, dev beta prod),)
$(error ENV must be dev, beta, or prod (e.g. make ENV=dev))
endif
nop:
echo "Nothing done."$(findstring ${ENV}, dev beta prod)"#"
Если я запускаю
make ENV=devx nop
Я получаю этот вывод
Makefile:7: *** ENV must be dev, beta, or prod (e.g. make ENV=dev). Stop.
С другой стороны
make ENV=d nop
выдает этот вывод
echo "Nothing done."d"#"
Nothing done.d#
Это показывает, что $(findstring...
возвращает непустую строку, противоречащую документации
В чем подвох?
Ответ №1:
findstring
Функция находит экземпляр «d»; документация неоднозначна, а не неверна. Используйте filter
вместо этого.