使用Addprefix函数使字符串与另一个字符串无法比较

时间:2012-05-29 18:40:18

标签: string syntax makefile escaping gnu-make

所以,我有以下代码:

OBJ := $(addprefix 'obj_', $(basename $(notdir /build/common.mk)))

所以现在OBJ1是“obj_common”

ifeq ($(OBJ),obj_common)
    @echo equal (**don't know how to format indent in this website..assume there is.**)
endif

ifeq无法将$(OBJ)与obj_common进行比较,至少它没有回应......

(但是,如果我摆脱addprefix函数如下:)

OBJ := $(basename $(notdir /build/common.mk))

所以现在OBJ1是“常见的”

ifeq ($(OBJ),common)
    @echo equal
endif

此代码会回显,这意味着它们可以比较并且相等。

我需要引用变量$(OBJ_common)(我有一个这种变量的大列表,所以我不能手动输入字符串),但是现在addprefix函数使得这个字符串不是一个字符串。 .. 有谁可以帮我解决这个问题?如果我的问题不明确,请告诉我。非常感谢你。

1 个答案:

答案 0 :(得分:1)

嗯,错误在以下声明中:

OBJ := $(addprefix 'obj_', $(basename $(notdir /build/common.mk)))
so now OBJ1 is "obj_common"

事实上,由于您在OBJ1的第一个参数中使用的引号,'obj'_common变为addprefix

所以没有引号它应该可以正常工作:

OBJ := $(addprefix obj_, $(basename $(notdir /build/common.mk)))

提示

使用warning and error函数调试脚本:

OBJ := ...
$(warning so now OBJ1 is [$(OBJ1)])