我是这个(make)的初学者,并且有一些问题试图grep文件中的文本(作为make的一部分在Windows上进行)。我试图解决的更大问题是检查给定目录中的所有二进制可执行文件是否满足其各自的依赖关系。我使用depends.exe(Dependency Walker)作为后面的部分,我尝试grep的输出文件,如果依赖性验证失败,可能会中止构建过程。使错误(Windows):第1行:语法错误附近的意外令牌`,'
binary-dependency-validate:
for BINARYEXEC in $(shell $(PATH_TO_FIND_EXE) $(PRE_DEFINED_DIR) -name "*.exe"); do \
$(PATH_TO_DEPENDS_EXE) /c /pb /ot $(PRE_DEFINED_DIR)/$$BINARYEXEC-depends.txt $(PRE_DEFINED_DIR)/$$BINARYEXEC ; \
ifeq ($(shell $(PATH_TO_GREP_EXE) "Error: At least one required implicit or forwarded dependency was not found." $(PRE_DEFINED_DIR)/$$BINARYEXEC-depends.txt),); \
@echo "Dependency ok" ; \
endif ; \
done
我遇到了以下错误:
line 1: syntax error near unexpected token `,'
任何建议,将极大地帮助。我看着this后,上前对准无压痕IFEQ以及(这并没有帮助。)
谢谢,Beta(详细解释)。当我使用shell条件时,我解决了这个问题。但我有另一个问题缠绵。当我运行make时,'grep'命令始终在目标之前开始,因此当grep运行时$$ BINARYEXEC为空。即使for循环迭代通过,每次迭代都不会重新计算grep。并且得到的错误是:“grep: /-depends.txt:没有这样的文件或目录”。我必须错过一些关于如何使这些命令处理的细微事情。任何指针都会很棒。 –
2012-08-14 23:34:41
通过纯粹的实验,我看到任何标记为在shell中运行的东西都在其他命令之前被处理(并执行)。因此,我将$(shell $(PATH_TO_GREP)...)更改为$(PATH_TO_GREP)....,将其全部从if条件中取出,现在我的shell条件如下所示:if [[$$ ? -eq 0]]。这对我有效。谢谢。 – 2012-08-15 00:23:18
@ durden83,你再次在命令中加入Make语言('$(shell ...)')。 – Beta 2012-08-15 01:07:43