Makefile评估变量值

时间:2016-02-01 14:03:55

标签: makefile

我有一个小程序来编译c源然后链接它们,我为它定义了一个函数,然后在链接阶段,程序在我检查并且它们存在时找不到目标文件。 当我第二次运行make时,该功能只能链接它们。

define compile
$(foreach s,$(SRC),gcc s -o $(addprefix $(OBJECT_DIR)/, $(patsubt %.c.%.o,$(notdir $(s))));)
    gcc -shared -o sharedlib.so $(wildcard $(OBJECT_DIR)/*.o)
endef
all:
    $(call compile)

我试图回显$(OBJECT_DIR)的值,并且在第一次运行make时它是空的,它只在第二次运行make时填充了适当的值

1 个答案:

答案 0 :(得分:1)

这与你的设计截然不同,但我认为这是要走的路:

OBJ := $(patsubst %.c, $(OBJECT_DIR)/%.o, $(notdir $(SRC)))

vpath %.c $(dir $(SRC))

sharedlib.so: $(OBJ)
    gcc -shared -o $@ $^

$(OBJ): $(OBJECT_DIR)/%.o: %.c
    gcc s -o $@ $<