如何在Makefile中捕获build-%目标的正则匹配部分
提取Makefile模式目标中的匹配字符串
你说得对,$@确实会返回整个目标名,但GNU Make里专门有个自动变量就是干这个的——$*,它正好会捕获模式目标里%匹配到的部分!
举个实际的例子,假设你的Makefile里有这样的目标定义:
build-%: @echo "正在构建组件: $*" # 这里可以直接用$*代表匹配到的字符串,比如执行针对该组件的编译命令 gcc -o bin/$* src/$*.c
当你运行make build-test时,$*就会被替换成test,输出就是正在构建组件: test,同时编译命令也会变成gcc -o bin/test src/test.c,完全符合你的需求。
补充一点:这个$*变量是GNU Make的标准自动变量,只要你用的是GNU Make(大部分Linux/macOS环境默认都是)就没问题。如果是其他Make实现可能需要额外处理,但一般场景下用$*就足够解决你的问题啦。
内容的提问来源于stack exchange,提问作者Mazzy
相关产品推荐
相关产品推荐

