2011-05-27 127 views
0

这里是我的makefile为什么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

此:

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

+0

这是我今天欠你的两次......非常感谢! – mrswmmr 2011-05-27 15:59:48

1

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

+0

此外,您可能会将目标“全部”更改为“测试”,因为该规则会创建“测试”。如果你不这样做,每次运行make时都会重新链接。 – mah 2011-05-27 15:59:37

相关问题