首页 > 代码库 > 我所使用的一个通用的Makefile模板
我所使用的一个通用的Makefile模板
话不多说,请看:
我的项目有的目录结构有:
dirls/├── include│ └── apue.h├── lib│ ├── error.c│ ├── error.o│ └── Makefile├── src│ ├── dirls.c│ ├── dirls.out│ └── Makefile└── test_client
而我的Makefile模板代码如下:
SRCS = $(wildcard *.c ../lib/*.c) #wildcard把 指定目录 ./ 和 ../lib 下的所有后缀是c的文件全部展开。OBJS = $(SRCS:.c = .o) #OBJS将$(SRCS)下的.c文件转化为.o文件CC = gcc #代表所使用的编译器INCLUDES = -I../include \ #头文件查找路径 -I. LIBS = -L../lib \ #链接库查找地址CCFLAGS = -g -Wall -O0 #附加参数OUTPUT = dirls.out #输出程序名称all:$(OUTPUT)$(OUTPUT) : $(OBJS) $(CC) $^ -o $@ $(INCLUDES) $(LIBS)%.o : %.c $(CC) -c $< $(CCFLAGS)clean: rm -rf *.out *.o #清除中间文件及生成文件.PHONY:clean
另外附上别的网站的几个Makefile模板:
1、编译动态库
############################################################# # Makefile for shared library.# 编译动态链接库##############################################################set your own environment optionCC = g++CC_FLAG = -D_NOMNG -D_FILELINE#set your inc and libINC = LIB = -lpthread -L./ -lsvrtool#make target lib and relevant obj PRG = libsvrtool.soOBJ = Log.o#all targetall:$(PRG)$(PRG):$(OBJ) $(CC) -shared -o $@ $(OBJ) $(LIB).SUFFIXES: .c .o .cpp.cpp.o: $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o.PRONY:cleanclean: @echo "Removing linked and compiled files......; rm -f $(OBJ) $(PRG)
2、编译静态库
############################################################## Makefile for static library.# 编译静态链接库##############################################################set your own environment optionCC = g++CC_FLAG = -D_NOMNG -D_FILELINE#static library use ‘ar‘ command AR = ar#set your inc and libINC = LIB = -lpthread -L./ -lsvrtool#make target lib and relevant obj PRG = libsvrtool.aOBJ = Log.o#all targetall:$(PRG)$(PRG):$(OBJ) ${AR} rv ${PRG} $?.SUFFIXES: .c .o .cpp.cpp.o: $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o.PRONY:cleanclean: @echo "Removing linked and compiled files......" rm -f $(OBJ) $(PRG)
3、可执行程序
############################################Makefile for simple programs###########################################INC=LIB= -lpthreadCC=CCCC_FLAG=-WallPRG=threadpooltestOBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o$(PRG):$(OBJ) $(CC) $(INC) $(LIB) -o $@ $(OBJ) .SUFFIXES: .c .o .cpp.cpp.o: $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o.PRONY:cleanclean: @echo "Removing linked and compiled files......" rm -f $(OBJ) $(PRG)
我所使用的一个通用的Makefile模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。