0

我正在尝试在 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,我应该检查我的程序的每个依赖项,并在必要时重新构建它。

4

0 回答 0