????6. ??????????????????
??????????????????????????main?????????????????main2??????????д
BIN = main main2                ??????????BIN??
OBJECTS= main.o add.o sub.o
all : $(BIN)   ????????
main : $(OBJECTS)
gcc -Wall -g  $< -o $@
main2: $(OBJECTS)
gcc -Wall -g  $< -o $@
main.o : main.c
gcc -Wall -g -c $< -o $@
main2.o :msin2.c
gcc -Wall -g -c $< -o $@
add.o:add.c add.h
gcc -Wall -g -c $< -o $@
sub.o:sub.c sub.h
gcc -Wall -g -c $< -o $@
clean :
rm -f $(OBJECTS) $(BIN)
?????????????????all???????????BIN??????? main main2???????????????????????????????????????????????????Makefile?????
BIN = main main2
OBJECTS= main.o add.o sub.o
CC = gcc
CFALGS = -Wall -g
all : $(BIN)
main : $(OBJECTS)
$(CC) $(CFALGS)  $< -o $@
main2: $(OBJECTS)
$(CC) $(CFALGS)  $< -o $@
main.o : main.c
$(CC) $(CFALGS) -c  $< -o $@
main2.o :msin2.c
$(CC) $(CFALGS) -c  $< -o $@
add.o:add.c add.h
$(CC) $(CFALGS) -c  $< -o $@
sub.o:sub.c sub.h
$(CC) $(CFALGS) -c  $< -o $@
clean :
rm -f $(OBJECTS) $(BIN)
????????????????????????????????????????????????????????????
BIN = main main2
OBJECTS= main.o add.o sub.o
CC = gcc
CFALGS = -Wall -g
all : $(BIN)
main : $(OBJECTS)
$(CC) $(CFALGS)  $< -o $@
main2: $(OBJECTS)
$(CC) $(CFALGS)  $< -o $@
.o .c :                                               ??????????????
$(CC) $(CFALGS) -c  $< -o $@
clean :
rm -f $(OBJECTS) $(BIN)
???????? .o.c :???????????????е?.c?????.o?????????????????????????????????????????
????7. make????????????
?????????make?к?????????????
????//????????
????$(function arguments)     ??function??????????arguments??????????$?????á?
??????????????????????????????????
????????????????make?????????
????$(wildcard PATTERN) ??????????????????????????
????src = $(wildcard *.c)  ??????????????????.c?????????????б???浽src?С?
????$(patsubst PATTENR??REPLACEMENT??TEXT) ???滻?????????????TEXT??????б????PATTENR?滻?REPLACEMENT????
????$(patsubst %.c??%.o??$src)  ????src?е?.c????б??е??????.c?滻?.o??
??????????
????$(src:.c =.o)   ?????????????á?
????shell????
????shell???????????shell?μ?????????????$???????????
????$(shell ls -d */) ??????????μ?????????ж??г?????
???????????????????????????????Щ????????????????????????????main.c?????????????????????????ж??и????.c????????????е?.c?????????????main?????
CC       = gcc
CFLAGS   = -Wall -g
BIN      = main
SUBDIR   = $(shell ls -d */)      ??SUBDIR?????????????????б??
ROOTSRC  = $(wildcard *.c)  ??ROOTSRC???????????μ?.c????б??
ROOTOBJ  = $(ROOTSRC:%.c = %.o)  ??ROOTBOJ ????????????.c????????.o?б??
SUBSRC   = $(shell find $(SUBDIR) -name '*.c')  ??SUBSRC ???????????????μ??.c?????
SUBOBJ   = $(SUBSRC:%.c = %.o)     ?    ???SUBOBJ???????????????μ?.c????????.o????б??
$(BIN):$(ROOTOBJ) $(SUBOBJ)         ??main??????????????????????????μ?.o?????
$(CC) $(CFLAGS) -o $(BIN) $(ROOTOBJ) $(SUBOBJ)
.o .c:
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(BIN) $(ROOTOBJ) $(SUBOBJ)