根据gnu make文档,如果规则通过一次调用生成多个目标(例如,使用执行多个输出文件的工具的配方),则可以使用'&:'规则语法来告知make。但是,当在多个规则中具有多个(但唯一)目标时,使用此语法时,我会收到有关目标“&”的警告。好像在把&号当作目标名称而不是成为目标先决条件分隔符的一部分一样。
在我最初的项目中,我有两个具有多个目标的规则,以及一个通过单个语句/工具生成这些目标的方法。对于这两个规则,目标都是唯一的。我创建了以下简单示例来演示make生成的警告:
all: file_abbc
.PHONY: all clean
clean:
del /Q file_*
file_abbc: file_ab file_bc
copy file_ab+file_bc file_abbc
file_ab file_bc &: file_a file_b file_c
copy file_a+file_b file_ab
copy file_b+file_c file_bc
file_a file_b file_c &: content
copy content file_a
copy content file_b
copy content file_c
在上述Windows上运行make产生的警告:
Makefile:17:警告:覆盖目标“&”的配方
Makefile:13:警告:忽略目标'&'的旧配方
为什么要抱怨目标“&”?
您正在使用的GNU make旧版本不了解&:
规则,因此只能将其&
视为文件名。使用make --version
看看你正在运行的版本升级是较早的是4.3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句