Makefile устанавливает глобальную переменную в теле цели - PullRequest
0 голосов
/ 25 мая 2018

Я хочу установить глобальную переменную через рецепт, а затем сослаться на эту переменную в другом независимом рецепте

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

ACTIVE = a

switch:
ifeq ($(ACTIVE),b)
    ACTIVE=$(shell echo 'a')
else
    ACTIVE=$(shell echo 'b')
endif

print:
    $(info acitve = $(ACTIVE))

Я знаю, что есть способы передать значение переменной, специфичной для цели, зависимым целям, но это не то, что я хочу.

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете использовать $(eval ...) для этого, хотя это почти всегда плохая идея.Я должен предположить, что ваша реальная ситуация намного сложнее, потому что есть много лучших способов выполнить то, что вы фактически предоставили в образце make-файла.

switch:
        $(eval ACTIVE=$(if $(filter-out a,$(ACTIVE)),a,b))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...