makefile 单独编译一个文件

#!/sh/bin

.SUFFIXES:.c.o

CDIR = /Users/shelley/c
BINDIR = $(CDIR)/bin
CC = gcc
CFLAGS = -g -O
RM = rm -f

getoptOBJ = getopt.o
getopt:$(getoptOBJ)
    $(CC) $(CFLAGS) -o $(BINDIR)/$@ $(BINDIR)/$^
    $(RM) $(BINDIR)/$^

strchrOBJ = strchr.o
strchr:$(strchrOBJ)
    $(CC) $(CFLAGS) -o $(BINDIR)/$@ $(BINDIR)/$^
    $(RM) $(BINDIR)/$^

#模式规则
#%o:%c
#    $(CC) $(CFLAGS) -o $(BINDIR)/$@ -c $<

#后缀规则
.c.o:
    $(CC) $(CFLAGS) -o $(BINDIR)/$@ -c $<

.PHONY:clean

clean:
    $(RM) $(BINDIR)/*
    @echo "this rm -f $(BINDIR)/*" 
原文地址:https://www.cnblogs.com/galoishelley/p/3821697.html