GNU Make执行test-newsletter-only报错:无php目标规则,求排查
问题诊断与修复方案
这个报错的核心原因是你错误地把命令内容写在了Make规则的依赖位置,而不是正确的命令执行区域。
错误写法的问题分析
你的Makefile规则是:
test-newsletter-only: php bin/phpunit src/AppBundle/Tests/Service/NewsletterFromPageServiceTest.php
在Make的语法里,冒号:后面的内容被解析为目标test-newsletter-only的依赖文件,所以Make会去寻找名为php的文件/目标,找不到就抛出了No rule to make target 'php'的错误——它完全没意识到你是想执行php命令。
正确的规则写法
你需要把执行命令放到规则的命令段(Recipes)里,这个部分必须用Tab键缩进(不能用空格,Make对这个要求很严格),修正后的Makefile规则应该是这样:
test-newsletter-only: php bin/phpunit src/AppBundle/Tests/Service/NewsletterFromPageServiceTest.php
额外注意事项
- 一定要确保命令行前面是单个Tab字符,如果用空格替代,Make会报错说缺少命令。
- 如果你的
bin/phpunit需要可执行权限,提前用chmod +x bin/phpunit确保它能正常运行。 - 要是你希望这个目标不与同名文件混淆,可以加上
.PHONY声明,避免当前目录存在test-newsletter-only文件时Make跳过执行:.PHONY: test-newsletter-only test-newsletter-only: php bin/phpunit src/AppBundle/Tests/Service/NewsletterFromPageServiceTest.php
内容的提问来源于stack exchange,提问作者Mayor of the Plattenbaus
相关产品推荐
相关产品推荐

