Make Rules

target: components ls

TAB rule 

main:main.o mytool1.o mytool2.o 

 gcc -o main main.o mytool1.o mytool2.o 

main.o:main.c mytool1.h mytool2.h 

 gcc -c main.c -I. 

mytool1.o:mytool1.c mytool1.h 

 gcc -c mytool1.c -I. 

mytool2.o:mytool2.c mytool2.h 

 gcc -c mytool2.c -I. 

 

$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件

mkf:mkf.o mytool1.o mytool2.o
        gcc -o $@ $^
mkf.o:mkf.c mytool1.h mytool2.h
        gcc -c $< -I.
mytool1.o:mytool1.c mytool1.h
        gcc -c $< -I.
mytool2.o:mytool2.c mytool2.h
        gcc -c $< -I.
 

这个规则表示所有的 .o文件都是依赖与其相应的.c文件的.例如mytool.o依赖于mytool.c  

main:main.o mytool1.o mytool2.o 

 gcc -o $@ $^ 

.c.o: 

 gcc -c $< -I.; 

CC 表示我们的编译器名称,缺省值为cc. 

CFLAGS 表示我们想给编译器的编译选项 

LDLIBS 表示我们的在编译的时候编译器的连接库选项.(我们的这个程序中还用不到这个 

    选项

  o

CC=gcc 

CFLAGS=-g -Wall -O2 -I. 

main:main.o mytool1.o mytool2.o 

.c.o: 

原文地址:https://www.cnblogs.com/eiguleo/p/3879129.html