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

如何在Makefile中接收命令行参数并透传给内部执行命令

Makefile 透传参数给内部命令实现方案

你可以通过以下两种常用方案实现需求:

方案1:自定义变量传参(最推荐,兼容性最好)

这是行业内最通用的实现方式,不会和make内置参数逻辑冲突,修改成本极低。

  1. 修改Makefile中的run_test目标,追加自定义变量接收参数:
run_test:
	phpunit $(ARGS)
  1. 执行命令时通过ARGS变量传入你需要的所有phpunit参数:
# 单参数示例
make test ARGS="--filter=thistest"
# 多参数示例
make test ARGS="--filter=thistest -v --debug"

你也可以同步修改usage提示,方便后续使用:

usage:
	@echo "make test                      Test environment"
	@echo "make test ARGS=\"<参数>\"         Run test with custom phpunit arguments"

方案2:直接后缀传参

如果你不想每次输入ARGS=前缀,可以通过--分隔符实现参数直接透传,需要额外处理make的目标匹配逻辑:

  1. 完整修改后的Makefile如下:
.PHONY: all

info: header usage

define HEADER

MY PROJECT HEADER

endef
export HEADER

header:
	@echo "$$HEADER"

usage:
	@echo "make test                      Test environment"
	@echo "make test -- <参数>            Run test with custom phpunit arguments"

test: header run_test

run_test:
	phpunit $(filter-out $@,$(MAKECMDGOALS))

# 匹配所有未定义的目标,避免make报不存在目标的错误
%:
	@:
  1. 执行命令时需要用--分隔make目标和透传参数:
make test -- --filter=thistest

注意:如果不加--,带-开头的参数会被make识别为自身的内置选项,没有对应选项时会直接报错,因此该方案仅适合习惯添加分隔符的场景。


内容的提问来源于stack exchange,提问作者BigJobbies

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:05