Makefile 从一个变量中去掉所有空格,如果不为空,则追加到另一个变量

Makefile 从一个变量中去掉所有空格,如果不为空,则追加到另一个变量,makefile,Makefile,我在Windows中使用make,我需要操作一些变量来创建文件名。我有一个基本文件名和一个可选的附加部分。如果附加了可选部分,则应在两个部分之间插入下划线。可选部分正在从文件中读取,包含5个字符、空格或字母数字 这就是我期望的工作: OPTIONAL_NAME=" " BASE_NAME=myfile STRIPPED_OPTIONAL_NAME=$(strip $(OPTIONAL_NAME)) ifeq ("$(STRIPPED_OPTIONAL_NAME)","") FULL_NA

我在Windows中使用make,我需要操作一些变量来创建文件名。我有一个基本文件名和一个可选的附加部分。如果附加了可选部分,则应在两个部分之间插入下划线。可选部分正在从文件中读取,包含5个字符、空格或字母数字

这就是我期望的工作:

OPTIONAL_NAME="     "
BASE_NAME=myfile
STRIPPED_OPTIONAL_NAME=$(strip $(OPTIONAL_NAME))
ifeq ("$(STRIPPED_OPTIONAL_NAME)","")
FULL_NAME=$(BASE_NAME)
else
FULL_NAME=$(BASE_NAME)_$(STRIPPED_OPTIONAL_NAME)
endif
可选的\u名称可以具有以下值:

OPTIONAL_NAME="     "
OPTIONAL_NAME="ABCDE"
OPTIONAL_NAME="A    "
OPTIONAL_NAME="  A  "
OPTIONAL_NAME="    A"
由于导入方式的不同,可选_NAME的值周围有引号,请参见我的上一个问题-

结果的问题是strip似乎将多个空间缩减为单个空间,但实际上并没有删除前导或尾随空间

我试着用这个来去除空间:

space:=
space+=
STRIPPED_OPTIONAL_NAME=$(subst $(space),,$(OPTIONAL_NAME))
这确实删除了空格,但我很难检查是否有空字符串

谢谢


Stephen

在比较中,不应将变量用引号括起来。请尝试以下方法:

ifeq ($(STRIPPED_OPTIONAL_NAME),"")
上面检查是否有空字符串


检查单个空间。

嗨,Joachim,不幸的是,这对我不起作用。如果OPTIONAL_NAME=则ifeq$STRIPPED_OPTIONAL_NAME解析为false。有没有可能是我的环境出了什么问题导致了这种情况?@sclarke81更新了我的答案。
ifeq ($(STRIPPED_OPTIONAL_NAME)," ")