比较字符串的 Makefile 问题
Makefile issue comparing strings
在我的 makefile 中,我需要检查文件是否以 bash shebang 开头。
我通过这样做得到那个值
PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)
然后我将它与这个值进行比较:
BASH_SHEBANG = \#!/bin/bash
然后我通过
检查它们是否相等
ifneq ($(PROJECT_AUTOINSTALL_FIRST_LINE),$(BASH_SHEBANG))
@${ERROR_ECHO} "The FIRST line in project autoinstall file MUST be $(BASH_SHEBANG)."
endif
问题是无论文件是否以 shebang 开头,条件始终为真。
为了以可视化方式测试相等性,我做了一个调试回显并得到了这个:
乍一看它们似乎是相等的,但代码并没有说明这一点。你知道我做错了什么吗?
谢谢。
什么
PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)
does 只是将文字字符串 $(head -n 1 ./autoinstall_script.sh)
分配给变量 PROJECT_AUTOINSTALL_FIRST_LINE
。不是你想要的。请尝试以下操作:
PROJECT_AUTOINSTALL_FIRST_LINE := $(shell head -n 1 ./autoinstall_script.sh)
在我的 makefile 中,我需要检查文件是否以 bash shebang 开头。
我通过这样做得到那个值
PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)
然后我将它与这个值进行比较:
BASH_SHEBANG = \#!/bin/bash
然后我通过
检查它们是否相等ifneq ($(PROJECT_AUTOINSTALL_FIRST_LINE),$(BASH_SHEBANG))
@${ERROR_ECHO} "The FIRST line in project autoinstall file MUST be $(BASH_SHEBANG)."
endif
问题是无论文件是否以 shebang 开头,条件始终为真。 为了以可视化方式测试相等性,我做了一个调试回显并得到了这个:
乍一看它们似乎是相等的,但代码并没有说明这一点。你知道我做错了什么吗?
谢谢。
什么
PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)
does 只是将文字字符串 $(head -n 1 ./autoinstall_script.sh)
分配给变量 PROJECT_AUTOINSTALL_FIRST_LINE
。不是你想要的。请尝试以下操作:
PROJECT_AUTOINSTALL_FIRST_LINE := $(shell head -n 1 ./autoinstall_script.sh)