CFLAGS = -g  -lobapi -L.
%.o : CFLAGS = -L.

scan_sync_demo.o : scan_sync_demo.c
  gcc -c  $(CFLAGS) {1}lt; -o $@
set_sync_demo.o : set_sync_demo.c
  gcc -c  $(CFLAGS) set_sync_demo.c
time_test.o : time_test.c
  gcc -c  $(CFLAGS) time_test.c
sum_async_demo.o : sum_async_demo.c
  gcc -c  $(CFLAGS) sum_async_demo.c


scan_sync_demo: scan_sync_demo.o
  gcc $(CFLAGS) {1}lt; -o $@ 
set_sync_demo:set_sync_demo.o
  gcc $(CFLAGS) $@ -o set_sync_demo
time_test:time_test.o
  gcc $(CFLGGS) $@ -o time_test
sum_async_demo:sum_async_demo.o
  gcc $(CFLAGS) $@ -o sum_async_demo

.PHONY : clean
clean:
  rm scan_sync_demo scan_sync_demo.o  \
  set_sync_demo set_sync_demo.o \
  time_test time_test.o \
  sum_async_demo sum_async_demo.o



利用通配符的简化版本:

CFLAGS = -g -L.
LDFLAGS = -lobapi -L.
targets = scan_sync_demo set_sync_demo time_test sum_async_demo
objects = scan_sync_demo.o set_sync_demo.o time_test.o sum_async_demo.o
all: $(targets)

$(objects): %.o: %.c
  $(CC) -c $(CFLAGS) {1}lt; -o $@ 

$(targets): $(objects)
  $(CC) $(CFLAGS) $(LDFLAGS) {1}lt; -o $@

.PHONY : clean
clean:
  rm scan_sync_demo scan_sync_demo.o  \
  set_sync_demo set_sync_demo.o \
  time_test time_test.o \
  sum_async_demo sum_async_demo.o



make即可。但是上面的不支持单个文件的make,改造方法如下:

 

CFLAGS = -g -L.
LDFLAGS = -lobapi -L.
targets = scan_sync_demo set_sync_demo time_test sum_async_demo
objects = scan_sync_demo.o set_sync_demo.o time_test.o sum_async_demo.o
all: $(targets)

%.o: %.c
  $(CC) -c $(CFLAGS) {1}lt; -o $@ 

$(targets): %: %.o
  $(CC) $(CFLAGS) $(LDFLAGS) {1}lt; -o $@

.PHONY : clean
clean:
  rm scan_sync_demo scan_sync_demo.o  \
  set_sync_demo set_sync_demo.o \
  time_test time_test.o \
  sum_async_demo sum_async_demo.o