0

所以,我有以下代码:

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 函数使这个字符串不是字符串......谁能帮我解决问题?如果我的问题不清楚,请告诉我。非常感谢你。

4

1 回答 1

1

好吧,错误在以下语句中:

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

事实上,因为您在 . 的第一个参数中使用了OBJ1引号。'obj'_commonaddprefix

因此,如果没有引号,它应该可以正常工作:

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

提示

用于调试脚本的用途warning和函数:error

OBJ := ...
$(warning so now OBJ1 is [$(OBJ1)])
于 2012-05-29T19:20:20.667 回答