Gnu make рассматривает строки, соединенные с \
как одну строку.ifeq
и др.и др.нужно быть на своей собственной линии, скорее как #ifdef
в C (если это вам поможет).
Вы, кажется, довольно смущены тем, что делает make.
Make выполняет make-файл втри отдельных этапа:
- Он читает в Makefile, строит график в памяти, сохраняет макросы / расширяет макросы по мере необходимости.
- Он смотрит на то, что вы просили сделать, ирешает, как пройти по графику.
- Идет по графику, расширяя рецепты оболочки до передачи производимой строки в оболочку.
Вы можете получить makeчтобы делать ваши ставки , когда он читает make-файл
WORD = GNUMAKE
FOUND = 1
$(warning ${FOUND})
ifneq ($(findstring ${WORD},${CURDIR}),)
$(warning list contains "${WORD}")
endif
Или вы можете сделать так, чтобы make делал это так же, как и команда для передачи в оболочку (т. е. до того, как оболочка будет выполнена):
.PHONY: target
target:
$(if $(findstring ${WORD},${CURDIR}),$(warning list contains "${WORD}"))echo Shell command here
Или действительно получите оболочку для этого.