每当我在Makefile中尝试构建类似的东西时 -
gcc -o main.o -IStarterWare_Files -c main.c StarterWare_Files/test.h StarterWare_Files/add.h
它引发了我的错误gcc:无法使用-c或-S指定多个文件。基本上我想让我的makefile再次构建目标,如果我改变我的一个头文件中的一些宏。我当前的Makefile是 -
EXE = nextgenrsm
CC = gcc
LIBS = StarterWare_Files/
CPPFLAGS = _IStarterWare_Files/
MAIN_OBS = $(patsubst %.c,%.o,$(wildcard *.c))
LIB_OBS = $(patsubst %.c,%.o,$(wildcard StarterWare_Files/*.c))
all: $(EXE)
$(EXE): $(MAIN_OBS) $(LIB_OBS)
$(CC) -o $@ $(LDFLAGS) $(MAIN_OBS) $(LIB_OBS) $(LDLIBS)
%.o: %.c
$(CC) -o $@ -MD -MP $(CPPFLAGS) $(CFLAGS) -c $^
ALL_DEPS = $(patsubst %.o,%.d,$(MAIN_OBS), $(LIB_OBS))
-include $(ALL_DEPS)
clean:
rm -f $(LIB_OBS) $(EXE) $(MAIN_OBS) $(ALL_DEPS)
.PHONY: all clean
如果其中一个头文件被修改,我无法弄清楚要再次构建我的可执行文件会做出哪些更改。我不想做干净再做一次。
答案 0 :(得分:0)
automake系统处理此问题的方法是不使用x = [float(i) for i in x if i!= '-']
,而是列出C文件和C文件中的所有标头。
例如:
%.o: %.c
有关将读取C文件并找出make依赖项的工具,请参阅makedepends。