Как создать локальную переменную в рецепте правила в makefile? - PullRequest
1 голос
/ 03 ноября 2019

как создать локальную переменную в рецепте Makefile, в которой только она может быть назначена, а также только там используется?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2019

Рецепт выполняется оболочкой, обычно построчно. Так что вам придется использовать определение переменных вашей оболочки, использовать escape, если ваша оболочка использует $ для переменных, и использовать escape, чтобы рецепт был логически одной строкой. Например, в Unix вы можете сделать:

target: <dependencies>
        v=42 ; \
        echo $$v
1 голос
/ 03 ноября 2019

Вы можете использовать так называемые целевые переменные :

foo: bar = 1
foo:
    @echo $(bar)

Или, если они недостаточно гибки для вас, подумайтеиспользование eval.

eval создает / манипулирует глобальными переменными, поэтому, чтобы избежать коллизий имен, я бы использовал префикс для переменных, которые вы создаете с ним:

foo:
    $(eval _local_bar = 1)
    @echo $(_local_bar)
...