所以,我有以下代码:
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函数使得这个字符串不是一个字符串。 ..
有谁可以帮我解决这个问题?如果我的问题不明确,请告诉我。非常感谢你。
答案 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)])