首页 > 解决方案 > 如何在目标外部的生成文件中打印文本?

问题描述

例如,我正在尝试测试这是否适用于我的 makefile 序言:

ifneq (,$(shell latexmk --version 2>/dev/null))
    echo Works
else
    echo Does not Works
endif

all:
    do things...

哪个错误:

*** recipe commences before first target.  Stop.

那么,如何打印规则之外的东西呢?

Makefile 不允许在规则之外或在result:=$(shell ...).

标签: debuggingmakefileprintf

解决方案


在 GNU Make 中有$(info ...),$(warning ...)$(error ...)内置函数。请注意,从语法上讲,它们是文本替换,但它们的返回值始终是一个空字符串(除非$(error ...)它永远不会返回),就像它与$(eval ...)etc 一样。所以它们几乎可以在任何地方使用。

另一个选项是$(file >/dev/stdout,...)(在 Windows 下使用“con”)。


推荐阅读