首页 > 代码库 > 万能的makefile
万能的makefile
MACRO = DEBUGALL
CC = gcc
CFLAGS+= -g -w -D$(MACRO)
SOURCES = $(wildcard *.c)
OBJS := $(patsubst %.c, %.o,$(SOURCES))
LIBS = -L$(shell pwd)/lib -ldb -ldl
demo: $(OBJS)
@echo "source files:" $(SOURCES)
@echo "object files:" $(OBJS)
$(CC) $(OBJS) -D$(MACRO) $(CFLAGS) -o demo -lpthread $(LIBS)
sinclude $(SOURCES:.c=.d)
%d: %c
@echo "create depend"
$(CC) -MM $(CFLAGS) $< > $@.$$$$; \
sed ‘s,\($*\)\.o[ :]*,\1.o $@ ,g‘ < $@.$$$$ > $@; \
$(RM) $@.$$$$
clean:
rm -rf $(OBJS)
rm -f demo
说明:
LIBS = -L$(shell pwd)/lib -ldb -ldl,这个就是指定静态库的路径并连接库
-L$(shell pwd)/lib表示连接库在当前目录下的lib目录下
-ldb和-ldl表示连接libdb.a和libdl.a这2个库,注意在linux下连接库的时候,前缀和后缀不要加
$(CC) $(OBJS) -D$(MACRO) $(CFLAGS) -o demo -lpthread $(LIBS) 此时静态库连接成功!
此makefile适合放在任一目录下,编译该目录下的文件,只要把要连接的库一加就ok!
万能的makefile