给出以下示例makefile:
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 :(得分: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
现在这给出了正确的结果