Makefile CFLAGS 和 SRCS-y 在函数形式中被忽略
Makefile CFLAGS and SRCS-y are ignored in function form
我在制作 Makefile 时遇到了一些问题。这是 Makefile 的一部分。
dirs := fwd common bp bp_manager $(XRTE_HASH)
VPATH_ = $(foreach dir,$(dirs),$(SRCDIR)/$(dir))
INC_ = $(foreach dir,$(dirs),$(wildcard $(dir)/*.h))
CFLAGS_ = $(foreach dir,$(dirs),-I$(SRCDIR)/$(dir))
SRCS-y_ = $(foreach dir,$(dirs),$(notdir $(wildcard $(dir)/*.c)))
VPATH += $(VPATH_)
INC += $(INC_)
CFLAGS += $(CFLAGS_)
SRCS-y += $(SRCS-y_)
check:
echo $(CFLAGS)
echo $(SRCS-y)
- VPATH 和 INC 按照我的预期工作。
- CFLAGS 不包含 CFLAGS_
- SRCS-y 是按照我的意愿打印的,但它在执行时没有任何效果 "make" - SRCS-y_ 与 null 相同。
- CFLAGS 和 SRCS-y 可以手动设置(无功能)。
我以为Makefile 和csh 差不多。
你能解释一下为什么 "make" 会忽略函数吗?
谢谢
CFLAGS _ 只是一个字符串。 $(CFLAGS _) 是一个变量的值。所以你应该:
CFLAGS += $(CFLAGS_)
SRCS-y += $(SRCS-y_)
我在制作 Makefile 时遇到了一些问题。这是 Makefile 的一部分。
dirs := fwd common bp bp_manager $(XRTE_HASH)
VPATH_ = $(foreach dir,$(dirs),$(SRCDIR)/$(dir))
INC_ = $(foreach dir,$(dirs),$(wildcard $(dir)/*.h))
CFLAGS_ = $(foreach dir,$(dirs),-I$(SRCDIR)/$(dir))
SRCS-y_ = $(foreach dir,$(dirs),$(notdir $(wildcard $(dir)/*.c)))
VPATH += $(VPATH_)
INC += $(INC_)
CFLAGS += $(CFLAGS_)
SRCS-y += $(SRCS-y_)
check:
echo $(CFLAGS)
echo $(SRCS-y)
- VPATH 和 INC 按照我的预期工作。
- CFLAGS 不包含 CFLAGS_
- SRCS-y 是按照我的意愿打印的,但它在执行时没有任何效果 "make" - SRCS-y_ 与 null 相同。
- CFLAGS 和 SRCS-y 可以手动设置(无功能)。
我以为Makefile 和csh 差不多。 你能解释一下为什么 "make" 会忽略函数吗? 谢谢
CFLAGS _ 只是一个字符串。 $(CFLAGS _) 是一个变量的值。所以你应该:
CFLAGS += $(CFLAGS_)
SRCS-y += $(SRCS-y_)