我正在尝试编写一个非递归的 make 构建系统。
我试图完成的是每个makefile都将定义自己的变量,并且“感觉”他是系统中唯一的一个。
例如:
项目布局:
-Makefile
-src1
----Makefile
----example1.c
-src2
----Makfile
----example2.c
主 Makefile 如下所示:
include src1/Makefile
include src2/Makefile
all: $(TARGETS)
每个 src1/src2 makefile 看起来像这样:
SRC:=...
OBJ:=...
TARGETS+=bin1 #in src2 its bin2
bin1: $(OBJ)
----gcc ....
$(OBJ_DIR)/ %.o : $(SRC_DIR)/%.c
----gcc ....
但是这种设计模式不起作用,因为目标中配方的评估被推迟了。
这意味着 src1 中的所有同名变量都获得了 src2 变量的值(最后一个赋值)。我试图用 $(eval include ...) 替换包含但没有运气。
请注意,所有的变量赋值都是用 :=
完成的,有没有办法让每个 makefile 都可以定义他想要的,或者每个变量应该是唯一的?
谢谢,塔尔