将命令行参数添加到 Makefile [重复]
Posted
技术标签:
【中文标题】将命令行参数添加到 Makefile [重复]【英文标题】:Adding command line arguments to an Makefile [duplicate] 【发布时间】:2021-12-31 08:50:03 【问题描述】:我目前正在编写一个Makefile
,它允许我轻松启动一些命令,但我希望能够传递其他参数。我似乎找不到任何有关如何执行此操作的文档。
下面是我的简化 Makefile;
.PHONY: all
info: header usage
define HEADER
MY PROJECT HEADER
endef
export HEADER
header:
@echo "$$HEADER"
usage:
@echo "make test Test environment"
test: header run_test
run_test:
phpunit
目前,如果我输入make test
,它将运行我的 phpunit 测试套件。
我想要做的是在之后添加任何额外的参数,例如make test --filter=thistest
.. 这个参数将被传递给 phpunit 命令,然后看起来像phpunit --filter=thistest
以及其他参数。
【问题讨论】:
您想要实现的用例使用 Make 是可行的,但与您建议的语法不同。也就是说,可以通过几种不同的方式将环境变量传递给make
,并为这些变量指定默认值。 *** 上的其他问题似乎已经涵盖了这一点,因此我建议将您的问题标记为重复。
【参考方案1】:
传递给 make 的所有参数都由 make 解析。它们不会传递给某些进行调用的程序。不可能完全按照您的意愿行事。
您可以做的是在命令行上设置一个 make 变量,用于您要传递的参数,然后在您的配方中使用该变量:
run_test:
phpunit $(PHP_FLAGS)
然后:
make PHP_FLAGS='--filter=thistest'
【讨论】:
我正要发表同样的解释,然后又回到单纯的评论;) 顺便说一句,如果有几个不同的 phpunit 参数并且它们的一些参数中有空格,我相信这不会很好地工作......但我不确定实际上提出另一个解决方案是否可行对于这个小问题(?) 无法格式化 cmets。但可能找到一个不同的答案也会起作用 如果你得到正确的引用,它会正常工作,这是一个 shell 问题而不是 make 问题。例如上面我使用单引号:我可以包含空格等。如果你需要你的参数包含引号,那么你必须将它们从 shell 中转义。等等。任何值都可以通过这种方式传递,但可能需要额外的引用层。以上是关于将命令行参数添加到 Makefile [重复]的主要内容,如果未能解决你的问题,请参考以下文章