2016-10-17 2 views
1

привести следующий пример Makefile:Sub-марка не расширяет целевые конкретные переменные

export MY_COMMENT := 'Hello world' 

t1: MY_COMMENT += 'very much!' 
t1: 
    @echo $(MY_COMMENT) 

t2: MY_COMMENT += 'and I love you all' 
t2: 
    @$(MAKE) -e --no-print-directory t1 

Если в командной строке, я типа make t2, ожидаемый выход был:

Hello world and I love you all very much! 

Вместо этого я получаю :

Hello world and I love you all 

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


Я также понимаю, что я мог бы сделать t2 зависеть от t1, который будет решать, что сразу же вопрос, но при ответе, предположим, я не могу t2 зависеть от t1 и мне нужно вызвать make снова

ответ

0

Решение было использовать override для каждой целевой переменной. Так что я закончил с:

export MY_COMMENT := 'Hello world' 

t1: override MY_COMMENT += 'very much!' 
t1: 
    @echo $(MY_COMMENT) 

t2: override MY_COMMENT += 'and I love you all' 
t2: 
    @$(MAKE) -e --no-print-directory t1 

И это теперь дает правильный outpuit

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