Makefile 5、Makefile 模板

博客介绍了两种Makefile的功能。Makefile_multi_2_multi_Out可将多个单独的c/cpp/cc文件编译为各个可执行文件;Makefile_multi_2_singl_Out则能将多个单独的c/cpp/cc文件编译为一个可执行文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Makefile_multi_2_multi_Out

  • 此Makefile 将多个-单独的c/cpp/cc文件,编译为各个可执行文件
#----------------- 此Makefile 将多个-单独的c/cpp/cc文件,编译为各个可执行文件
# $ make -f Makefile_multi_2_multi_Out


#------------------文件后缀 ------------------
# .o文件
SrcSuf      = c
SrcSuf2     = cpp
SrcSuf3     = cc
ObjSuf      = o
LibSuf      = so
LibSuf2     = a
.SUFFIXES: 	.$(SrcSuf) .$(SrcSuf2) .$(SrcSuf3) \
			.$(ObjSuf) .$(LibSuf)  .$(LibSuf2) 
#------------------源文件 目标文件 可执行文件------------------

OBJFILES    +=  test_getopt.$(ObjSuf) 
OBJFILES    +=  test_getopt2.$(ObjSuf) 

target		=  $(OBJFILES:.o=.out)


#------------------编译选项 ------------------
# 头文件目录
INCLUDEPATH += 	-I /usr/include/ 
INCLUDEPATH +=	-I /usr/local/include 
# C编译选项
CFlag 	+= $(INCLUDEPATH) -w -g -ggdb -fshort-wchar  -std=c11 
CppFlag += $(INCLUDEPATH) -w -g -ggdb -fshort-wchar  -std=c++11 
CxxFlag += $(INCLUDEPATH) -w -g -ggdb -fshort-wchar  -std=c++11 
#------------------链接选项 ------------------
# lib的路径
LIBPATH +=  -L /usr/lib/ 
LIBPATH +=	-L /usr/local/lib/     	 
# 动态库(libxxx.so)名称
LDLIBS 	+= 	-lpthread 
# 链接选项		
LDFLAGS +=  $(LIBPATH) 
LDFLAGS += 	$(LDLIBS)	
#------------------ ------------------
CC          =   gcc
CPP			=   g++
CXX 		=   g++
all: $(target) clean	

#------------------生成可执行文件 ------------------ 	
$(target):$(OBJFILES)
	@echo "creating $@ start..."
	$(CC)  $(LDFLAGS) $< -o $@
	@echo "creating $@ end"

#------------------ .c 生成 .o 文件
.$(SrcSuf).$(ObjSuf):
	@echo "Compiling $(EXECUTABLE) $<"
	$(CC) $(CFlag) -c $< -o $@ 
#------------------. cpp 生成 .o 文件
.$(SrcSuf2).$(ObjSuf):
	@echo "Compiling $(EXECUTABLE) $<"
	$(CXX) $(CppFLAGS) -c $< -o $@
#------------------ .cc 生成 .o 文件
.$(SrcSuf3).$(ObjSuf):
	@echo "Compiling $(EXECUTABLE) $<"
	$(CXX) $(CxxFLAGS) -c $< -o $@
#------------------

#---------------------------------------------------------
.PHONY:cleanobj
clean:
	rm -f *.o

.PHONY:cleanall
cleanall:
	rm -f $(EXECUTABLE) *.o *.a *.so *.out
#---------------------------------------------------------

Makefile_multi_2_singl_Out

  • 此Makefile 将多个-单独的c/cpp/cc文件,编译为一个可执行文件
#----------------- 此Makefile 将多个-单独的c/cpp/cc文件,编译为一个可执行文件

#------------------目标 ------------------
EXECUTABLE := main.out	
#------------------文件后缀 ------------------
# .o文件
SrcSuf      = c
SrcSuf2     = cpp
SrcSuf3     = cc
ObjSuf      = o
LibSuf      = so
LibSuf2     = a
.SUFFIXES: 	.$(SrcSuf) .$(SrcSuf2) .$(SrcSuf3) \
			.$(ObjSuf) .$(LibSuf)  .$(LibSuf2) 
#------------------源文件 ------------------
OBJFILES    +=  test_getopt.$(ObjSuf) 
OBJFILES    +=  test_getopt2.$(ObjSuf) 

#------------------编译选项 ------------------
# 头文件目录
INCLUDEPATH += 	-I /usr/include/ 
INCLUDEPATH +=	-I /usr/local/include 
# C编译选项
CFlag 	+= $(INCLUDEPATH) -w -g -ggdb -fshort-wchar  -std=c11 
CppFlag += $(INCLUDEPATH) -w -g -ggdb -fshort-wchar  -std=c++11 
CxxFlag += $(INCLUDEPATH) -w -g -ggdb -fshort-wchar  -std=c++11 
#------------------链接选项 ------------------
# lib的路径
LIBPATH +=  -L /usr/lib/ 
LIBPATH +=	-L /usr/local/lib/     	 
# 动态库(libxxx.so)名称
LDLIBS 	+= 	-lpthread 
# 链接选项		
LDFLAGS +=  $(LIBPATH) 
LDFLAGS += 	$(LDLIBS)	
#------------------ ------------------
CC          =   gcc
CPP			=   g++
CXX 		=   g++
all: $(EXECUTABLE) clean	

#------------------生成可执行文件 ------------------ 			
$(EXECUTABLE):$(OBJFILES)
	@echo "creating $(EXECUTABLE) start..."
	$(CC)  $(LDFLAGS) $(OBJFILES) -o $(EXECUTABLE) 
	@echo "creating $(EXECUTABLE) end"

#------------------ .c 生成 .o 文件
.$(SrcSuf).$(ObjSuf):
	@echo "Compiling $(EXECUTABLE) $<"
	$(CC) $(CFlag) -c $< -o $@ 
#------------------. cpp 生成 .o 文件
.$(SrcSuf2).$(ObjSuf):
	@echo "Compiling $(EXECUTABLE) $<"
	$(CXX) $(CppFLAGS) -c $< -o $@
#------------------ .cc 生成 .o 文件
.$(SrcSuf3).$(ObjSuf):
	@echo "Compiling $(EXECUTABLE) $<"
	$(CXX) $(CxxFLAGS) -c $< -o $@
#------------------

#---------------------------------------------------------
.PHONY:cleanobj
clean:
	rm -f *.o

.PHONY:cleanall
cleanall:
	rm -f $(EXECUTABLE) *.o *.a *.so *.out 
#---------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值