Можно ли объявить правило в определении в gnu-make? - PullRequest
0 голосов
/ 22 января 2020

Я думал, что мог бы использовать директиву define в make для создания нескольких одинаковых правил

define TESTPRG

${1}: 
        echo Build ${1}

endef

$(call TESTPRG,x)

Но я получаю этот вывод

$ make
make: *** No rule to make target 'echo', needed by '
x'.  Stop.

Похоже, что новая строка в мое определение потеряно

$ make -n -p | grep echo
make: *** No rule to make target 'echo', needed by '
x'.  Stop.
    echo Build ${1}
x: echo Build x
echo:

Я просто пытаюсь сделать что-то, для чего define не должен использоваться.

Kjeld

1 Ответ

1 голос
/ 23 января 2020

Это именно то, для чего define предполагается использовать. Вам просто нужно запомнить $(eval) это как часть Makefile:

$ cat Makefile
define TESTPRG

${1}:
        echo Build ${1}

endef

$(eval $(call TESTPRG,x))

$ make
echo Build x
Build x
...