GNU make 无法识别%
我正在尝试制作一个 makefile 来编译子文件夹中的各种示例。 makefile 包含以下内容:
S_1_2.exe : Twister.cpp Parsing.cpp ./Surfaces/S_1_2.cpp
g++ -o [email protected] $^ -I . -W -Wall
使用命令“make S_1_2.exe”运行时工作正常。但是:
%S_1_2.exe : Twister.cpp Parsing.cpp ./Surfaces/S_1_2.cpp
g++ -o [email protected] $^ -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
I'm trying to make a makefile for compiling various examples that are within a subfolder. The makefile consisting of just:
S_1_2.exe : Twister.cpp Parsing.cpp ./Surfaces/S_1_2.cpp
g++ -o [email protected] $^ -I . -W -Wall
Works fine when run with the command "make S_1_2.exe". However:
%S_1_2.exe : Twister.cpp Parsing.cpp ./Surfaces/S_1_2.cpp
g++ -o [email protected] $^ -I . -W -Wall
fails, even when run with the command make S_1_2.exe, with the error "make: * No rule to make target 'S_1_2.exe'. Stop."
Shouldn't %S_1_2.exe do pattern matching and so match S_1_2.exe? In which case why is it not matching this rule?
I am using GNU Make 3.81
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
百分比符号与非空字符串匹配。因此,您应该使用
%_1_2.exe
或更好的 -%.exe
。我不知道是否还有其他符号也与空字符串匹配。The percentage symbol matches a non-empty string. So you should use
%_1_2.exe
or better yet -%.exe
. I don't know if there is any other symbol that matches empty strings too.%
用于将目标的一部分与一个或多个依赖项中的相同部分进行匹配。您不能从所有依赖项中省略它。
The
%
is for matching a part of the target against the same part in one or more dependencies.You can't omit it from all dependencies.