makefile在编译c++代码时,默认xxx.o文件是依赖xxx.cpp/c文件的,并且自动准备好了从cpp编译.o文件的指令。所以这部分文字是可以省略的。
目录
最简单的情况:
并不单纯的情况(.o不仅依赖.cpp,也依赖其他文件):
引入macro.h
修改macro.h
最简单的情况:
看下面的makefile和main.cpp
CC := g++
main : main.o
${CC} -o main main.o
#main.o : main.cpp
# ${CC} -o main.o -c main.cpp
.PHONY : clean
clean :
rm *.o main
#include//#include "macro.h" int main(void){ //std::cout< 效果:
并不单纯的情况(.o不仅依赖.cpp,也依赖其他文件):
引入macro.h
现在main.o不仅依赖一个main.cpp,还依赖macro.h。所以makefile里面要把main.o对macro.h的依赖加上,但是仍不需要添加对main.cpp的依赖:
macro.h
#define PI 3.14159main.cpp
#include#include "macro.h" int main(void){ std::cout< makefile
CC := g++ main : main.o ${CC} -o main main.o main.o : macro.h # ${CC} -o main.o -c main.cpp .PHONY : clean clean : rm *.o main编译运行正常:
修改macro.h
把PI改为3.14。此时makefile里定义了main.o对macro.h的依赖,所以运行make指令会触发对main.o的再次编译:
可见,输出变成了3.14。



