gcc无法使用多个文件指定-o和-c或-S

时间:2015-06-30 15:16:40

标签: makefile gnu-make

每当我在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

如果其中一个头文件被修改,我无法弄清楚要再次构建我的可执行文件会做出哪些更改。我不想做干净再做一次。

1 个答案:

答案 0 :(得分:0)

automake系统处理此问题的方法是不使用x = [float(i) for i in x if i!= '-'] ,而是列出C文件和C文件中的所有标头。

例如:

%.o: %.c

有关将读取C文件并找出make依赖项的工具,请参阅makedepends