ref:https://www.cnblogs.com/gamesun/p/3323155.html
$@ 表示目標文件
$^ 表示所有的依賴文件
$< 表示第一個依賴文件
$? 表示比目標還要新的依賴文件列表
如一個目錄下有如下文件:
$ ls
hello.c hi.c main.c Makefile
按照 Makefile 規則規規矩矩的寫:
復制代碼
main: main.o hello.o hi.o
gcc -o main main.o hello.o hi.o
main.o: main.c
cc -c main.c
hello.o: hello.c
cc -c hello.c
hi.o: hi.c
cc -c hi.c
clean:
rm *.o
rm main
復制代碼
改為用上述符號進行替代:
復制代碼
main: main.o hello.o hi.o
gcc -o $@ $^
main.o: main.c
cc -c $<
hello.o: hello.c
cc -c $<
hi.o: hi.c
cc -c $<
clean:
rm *.o
rm main
復制代碼