You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免Makefile执行带参数目标时出现No rule to make target报错

错误原因

该报错的本质是make默认会将命令行传入的所有非选项参数识别为待执行的构建目标,你传入hello、world参数时,make找不到对应目标的构建规则,因此抛出报错。

解决方案1:添加通配空规则(一劳永逸,适配任意参数传入)

直接在现有Makefile末尾追加如下规则即可:

%:
	@:

规则说明:

  • %是make的通配符,可匹配所有不存在的目标
  • @:是make内置的空操作命令,执行时无任何输出和实际操作

修改后的完整Makefile示例:

.PHONY: echo
echo:
	@echo "parameters:" $(filter-out $@,$(MAKECMDGOALS))

%:
	@:

修改后再执行make echo hello world就不会抛出报错,可正常打印传入的参数。

解决方案2:命令行传参时添加标记(无需修改Makefile,适合临时场景)

执行命令时添加--标记,告诉make后续内容不属于目标:

make echo -- hello world

--是GNU make的内置分隔标记,标记后的所有参数不会被识别为构建目标,自然不会触发找不到规则的报错。

内容的提问来源于stack exchange,提问作者Amin Shah Gilani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:24:06