具有多个目标的单个调用的Makefile规则

问题描述 投票:0回答:1

根据gnu make documentation,如果规则通过一次调用生成多个目标(例如,使用配方执行带有多个输出文件的工具的配方),则可以使用'&:'规则语法来告知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:警告:忽略目标'&'的旧配方

为什么要抱怨目标'&'?

makefile target
1个回答
0
投票
[您使用的是不了解&:规则的旧版GNU make,因此只需将&当作文件名即可。使用make --version查看您正在运行的版本,如果版本早于4.3,请升级。
© www.soinside.com 2019 - 2024. All rights reserved.