Makefile make变量中的反斜杠换行符?

Makefile make变量中的反斜杠换行符?,makefile,gnu-make,Makefile,Gnu Make,我有一个makefile,它的功能如下: define finder find /usr/include /usr/local/include -name '*.h' \ | xargs grep -in stupid endef all: find: ${finder} xfind: find /usr/include /usr/local/include -name '*.h' \ | xargs grep -in stupid 目录列表实际上

我有一个makefile,它的功能如下:

define finder
    find /usr/include /usr/local/include -name '*.h' \
    | xargs grep -in stupid
endef

all:

find:
    ${finder}

xfind:
    find /usr/include /usr/local/include -name '*.h' \
    | xargs grep -in stupid
目录列表实际上要长得多,这就是为什么我想在它执行时打断它
xfind
正是我想要的:

$ make xfind
find /usr/include /usr/local/include -name '*.h' \
| xargs grep -in stupid
然而,我想使用一个,用于不同的目标;类似于
find
目标中使用的
finder
。不幸的是,
finder
是一个变量而不是一个变量,所以应用于它。当配方执行时,所有内容都在一行中

$ make find
find /usr/include /usr/local/include -name '*.h' | xargs grep -in stupid
有没有一种方法可以将反斜杠换行嵌入到变量中,直到它被用作配方为止

实际上,可以在变量中嵌入反斜杠换行符。棘手的是反斜杠(我花了一段时间才找到答案)

现在罐装配方可以写成

define find
find /usr/include /usr/local/include -name '*.h' ${backslash}${nl} \
| xargs grep -in stupid
endef
并且输出是期望的

find /usr/include /usr/local/include -name '*.h' \
 | xargs grep -in stupid

要这样做,以便make中显示的命令包含换行符吗?还是有其他功能上的需要?@EtanReisner-Yes;我希望在“xargs grep…”部分之前有一个换行符,这样我可以记住它的作用,查看控制台输出。我不确定这是否可行。在变量和
$(value)
(可能还有
$(eval)
)中有足够多的关于值的游戏,这可能是可能的,但我必须稍微戳一下它来尝试一些东西。哎呀!顺便说一句,您不需要GNU make中的
$(shell…
)。类似于
反斜杠:=\$(strip)
的东西可以正常工作。
find /usr/include /usr/local/include -name '*.h' \
 | xargs grep -in stupid