实验一中说到一个点,这里再提一遍:
make软件总是认为目标是对应文件的
好,接下来进行本次实验:
CC := gcc Target := helloworld.out $(Target) : func.o main.o $(CC) -o $(Target) main.o func.o main.o : main.c $(CC) -c main.c -o main.o func.o : func.c $(CC) -c func.c -o func.o .PHONY : rebuild clean build rebuild : clean build build : $(Target) # @echo "build" clean : # @echo "clean" rm *.o $(Target)
问: 如果把这两处改为main2.o, 修改后的makefile和修改之前,在执行效果上,将有什么变化??
答:(答案见下图中文字)
修改前,目标main.o是存在的,本地的main.o也是存在的,
这时候还要看目标main.o的依赖main.c, 发现main.c也没被修改过,
所以make时,提示:Nothing to be done for 'build'