如何检查 Make 规则中命令的输出?

How to check for output of command in Make rule?

在我的 lint 和单元测试之间,我想检查是否有任何 php 文件生成任何输出。

我正在尝试类似的方法,但显然行不通:

.PHONY: php_inc
php_inc:
    ifneq (,$(shell php -e src/*inc))
        $(error PHP include files should not have any output when parsed)
    endif

关于如何写这个的建议,或者更好的方法来解决这个问题?

记录我当前的工作:

@if [ ! -z "`php -e src/*inc`" ]; then \
    echo "PHP include files should not output. Got:"; \
    php -e src/*inc; \
    exit 1; \
fi

或更像...但我喜欢那里的引语。给我温暖的安全感:)

@if [ ! -z $(shell $(PHP) -e src/*inc) ]; then \

您可以这样做,以避免执行两次 php

@output=`php -e src/*inc`; \
if [ ! -z "$$output" ]; then \
 echo "PHP include files should not output. Got:"; \
 echo $$output; \
 exit 1; \
fi

我不知道什么时候输出会变得太大以至于 shell 无法处理。每当我不得不解决我必须根据输出而不是退出状态检查其状态的工具时,输出都相当适中。