为什么makefile每次都会重新编译一个类?

时间:2011-05-27 15:55:09

标签: makefile g++ recompile

这是我的makefile

all: main.o fileparam.o
        g++ -g $(LIBPATH) $(LIBS)  file_parameters.o main.o -o test
main.o: main.cpp
        g++ -g -Wall $(INCPATH) main.cpp -c

fileparam.o: file_parameters.cpp file_parameters.h
        g++ -g -Wall file_parameters.cpp -c

$(LIBPATH)$(LIBS)指向要包含的库,$(INCPATH)指向其他包含的文件

出于某种原因,每次我制作程序时都会重新编译file_parameters.o,我想知道我搞砸了哪里。谢谢!

编辑:每次都没有重新编译main.o

2 个答案:

答案 0 :(得分:2)

此:

fileparam.o: file_parameters.cpp file_parameters.h
        g++ -g -Wall file_parameters.cpp -c

应该是:

file_parameters.o: file_parameters.cpp file_parameters.h
        g++ -g -Wall file_parameters.cpp -c

此外,调用输出文件test可能会造成混淆 - 将其更改为mytest

答案 1 :(得分:1)

因为你的目标fileparam.o不是由规则生成的......你正在生成file_parameters.o。 make看到目标不存在,所以它必须构建它。