2013-08-26 3 views
-1

Я хочу запустить определенные правила, если какая-либо конкретная переменная среды задана иначе, запустив правила по умолчанию. В качестве примера, я хочу запустить test1 and test2, если переменная окружения MYTARGETS1 НЕ установлена. Однако с приведенным ниже кодом всегда выполняется правило test1, когда я использую команду make run.Makefile не устанавливает целевые объекты на основе значения переменной среды

MYTARGETS1 ?= True 

ifeq (${MYTARGETS1},True) 
MYTARGETS = test1 test2 
else 
MYTARGETS = test1 
endif 

test1: 
    echo "test1" 

test2: 
    echo "test2" 

run: common $(MYTARGETS) 

common: 
    echo "common" 
+0

Почему downvote? Это мое требование, я знаю, что одним из решений может быть использование «MYTARGETS» как env и передача правил для запуска, но я не хочу этого так! – sarbjit

ответ

2

В вашем коде есть небольшая ошибка. Первая строка должна быть MYTARGETS1 ?= false или просто MYTARGETS1 ?=, потому что ?= известен как условное назначение, означающее, что если переменная еще не установлена, установите ее с тем, что вы здесь назначили. С текущими изменениями я предложил, если передать MYTARGETS1make в то Makefile будет работать в соответствии с вашими требованиями

make MYTARGETS1=true 
+0

Я могу запустить этот make-файл только как «make run» в моем действительном коде. Это всего лишь пример – sarbjit

+0

Тогда вам лучше удалить первую строку. –

+0

Да, это сработало – sarbjit

Смежные вопросы