本文通过一个真实碰到的问题及其解决办法,引入并介绍“Makefile 重复目标”属性的使用:
(1).问题发生环境(Makefile原文片段):
world: FileA
@echo "test001..."
world: FileB
@echo "test002..."
错误输出信息:
Makefile:19: warning: overriding commands for target `world'
Makefile:15: warning: ignoring old commands for target `world'
test002...
(2).问题分析:
对同一目标“XXX”存在一个以上的重建命令,GNU make规定:
当同一个文件作为多个规则的目标时,只能有一个规则定义重建它的命令(双冒号规则除外)。如果为一个目标多次指定了相同或者不同的命令,就会产生第一个警告;第二个警告信息说新指定的命令覆盖了上一次指定的命令。
因此,这个Makefile可以改写为:
world: FileA
world: FileB
world:
@echo "test002..."
等价于一个目标只出现一次的情况:
world: FileA FileB
@echo "test002..."
<--文章完-->
阅读(4010) | 评论(0) | 转发(0) |