我的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函数行为的?
答案 0 :(得分:1)
它将#解释为注释的开头,因此该行的其余部分不再可见。
将字符转义为#,它将起作用。