GNU makefile中的$(shell)函数导致“对函数shell的未终止调用:missing)”

时间:2018-12-18 16:02:26

标签: grep gnu-make

说明:

我的GNU makefile中包含以下代码段:

test:=$(shell grep '#pragma' test_types.h)
$(info test:$(test))

以上结果导致以下错误消息:

***对函数'shell'的无终止调用:缺少')'。停止

但是,如果我从上面的代码段中删除了“#”

test:=$(shell grep 'pragma' test_types.h)
$(info test:$(test))

输出为:

测试:#pragma pack(push,1)#pragma pack(pop)

如果我直接从命令行运行以下命令:grep '#pragma' test_types.h。输出再次是:

#pragma pack(push,1)#pragma pack(pop)

问题:

将grep与在GNU makefile中搜索#结合使用时,是什么引起shell函数行为的?

1 个答案:

答案 0 :(得分:1)

它将#解释为注释的开头,因此该行的其余部分不再可见。

将字符转义为#,它将起作用。