【发布时间】:2019-04-23 23:00:52
【问题描述】:
我有两个 .c 文件和一个包含在两个 .c 文件中的 .h 文件。
我有制作文件:
CC=gcc
CFLAGS=-I.
OBJ = hellofunc.o hellomake.o
DEPS := $(OBJ:.o=.d)
-include $(DEPS)
%.o: %.c
$(CC) $(CFLAGS) -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $<
$(CC) -c -o $@ $< $(CFLAGS)
hellomake: hellomake.o hellofunc.o
$(CC) -o $@ $^
我修改了 hellomake.h 头文件,然后在 make 文件之上运行。它只编译分配给 DEPS 变量的第一个文件,即 hellofunc.c
仅供参考,当我更改 DEPS 变量的顺序时,它正在编译 hellomake.o ,似乎 make 只选择分配给 DEPS 变量的第一个文件。 我的makefile有什么问题吗..请帮忙。
【问题讨论】:
-
你没有声明对
hellomake.h的任何依赖,所以Make当然会忽略它。 -
@tripleee,您能否通过更新我的 make 文件来简要回答一下?我是新手
-
我使用 include 指令同时包含 hellomake.d 和 hellofunc.d 文件。应该可以吗?
-
我认为这个问题不应该被标记为与投票结束的人引用的问题的重复。这个利用了自动依赖生成。不需要手动将头文件添加到先决条件。