我遇到了一个问题,我整个上午都在打我的脑袋。我是修改makefile的新手,所以我遇到了一个我不知道如何解决的问题。我试图通过目录搜索任何以'Findings!'结尾的以'Findings.txt'结尾的文件。包含在里面。出于某种原因,我无法让我的条件声明正常工作。我假设它可能与通配符有关,但我试过的所有东西都不起作用,包括wilcard功能。我唯一的想法是shell可能在路径中有一个变量。使用shell命令的Makefile grep
GREP_FINDINGS := $(shell grep 'No Findings' $(C_DIR)/*Findings.txt)
我想条件化grep结果的输出,但我做错了什么。
ifeq ($(GREP_FINDINGS),)
@echo "Nothing was found for current build"
else
@echo "***Found string in Findings.txt***"
endif
您使用什么版本的Make? (如果您不确定,请尝试'make -v'。)'GREP_FINDINGS'是否包含您认为应该的内容?您的条件声明如何出错?当'GREP_FINDINGS'中有东西时,它是否需要第一个分支,还是当第二个分支不存在时? – Beta 2012-08-09 16:20:57
我在unix中使用GNU make 3.8和tcsh。在目前的形式下,它不会触发第一个分支,总是需要第二个分支。我只对这个条件使用GREP_FINDINGS,所以我认为它包含我想要的,因为我事先在控制台中测试了命令。我仍然在学习。我总是假设grep返回一个零输出,如果它发现了字符串,否则返回非零。非常感谢! – 2012-08-09 17:08:03
这看起来不像有效的Make代码(例如括号不平衡);你能剪切并粘贴实际的代码吗? – Beta 2012-08-09 17:23:46