我正在尝试在 Makefile 中为我的项目做好逻辑。假设我有一个带有规则的 Makefile:
...
NAME := prog_name
...
all: subsystem
subsystem:
@$(MAKE) -sC $(D_LIB)
@$(MAKE) -s $(NAME)
$(D_OBJ):
@mkdir -p $(D_OBJ)
$(NAME): $(D_OBJ) $(OBJ) $(H) $(LIB)
$(CC) ... -o $(NAME)
$(D_OBJ)%.o: $(D_SRC)%.c $(H) $(LIB)
@$(CC) ... -c $< -o $@
.PHONY: all subsystem
当我运行命令时:
制作(全部制作)
它检查 $(D_LIB) 是否有任何更改,然后运行 make for $(NAME) 规则。如果库或程序文件发生变化,我的程序会重新编译。
但是如果我运行命令:
制作 prog_name
它不会运行子系统规则,我不会以任何方式知道库中的更改。因此,该程序将不会被重建。所以我被如何使它相互连接的问题所困扰。如果我运行命令make (all)
或运行命令make prog_name
,我应该检查我的程序的每个依赖项,并在必要时重新构建它。