GNU无法识别%

时间:2010-11-07 14:46:30

标签: makefile gnu-make

我正在尝试创建一个makefile来编译子文件夹中的各种示例。 makefile只包含:

S_1_2.exe : Twister.cpp Parsing.cpp ./Surfaces/S_1_2.cpp
    g++ -o $@.exe $^ -I . -W -Wall

使用命令“make S_1_2.exe”运行时工作正常。但是:

%S_1_2.exe : Twister.cpp Parsing.cpp ./Surfaces/S_1_2.cpp
    g++ -o $@.exe $^ -I . -W -Wall

失败,即使使用命令make S_1_2.exe运行,也会出现错误“make: * 没有规则使目标'S_1_2.exe'。停止。”

不应该%S_1_2.exe进行模式匹配,因此匹配S_1_2.exe?在哪种情况下,为什么它不符合这条规则?

我正在使用GNU Make 3.81

2 个答案:

答案 0 :(得分:1)

百分比符号与非空字符串匹配。因此,您应该使用%_1_2.exe或更好 - %.exe。我不知道是否还有其他符号与空字符串匹配。

答案 1 :(得分:1)

%用于将目标的一部分与一个或多个依赖项中的相同部分进行匹配。 你不能在所有依赖项中省略它。