这是我的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
答案 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看到目标不存在,所以它必须构建它。