通用makefile 文件

本文介绍了一个用于C/C++项目的Makefile示例,详细展示了如何配置编译选项、依赖库路径及编译规则等,以便快速构建项目。

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

 

 

 

 

 

## c/c++ 代码编译Makefile
########################常规配置##################################################
##目标文件
TARGET = server

##安装目录
INSTALL_DIR = /opt/

##包含头文件路径
# -I/xx/xx/include
INC_DIR = -I/usr/include/mysql -I/usr/include/libxml2

##依赖库
LIB_DIR = -L/usr/lib64/mysql 
LIB_DEPENDS = -lmysqlclient -lcurl -lxml2

##编译选项
CFLAGS = -Wall -O -g
# -Wall  输出所有告警
# -O     在编译时进行优化
# -g     编译debug版本

######################################################################################
##编译器选用
CC = gcc
XX = g++

##wildcard通配符函数,产生一个所有.c .cpp文件列表
C_SRC = $(wildcard *.c)
CXX_SRC = $(wildcard *.cpp)

##产生一个所有.c .cpp文件 对应的.o文件列表
##把所有.c替换成.o
#C_OBJS = $(C_SRC:%.c=%.o)
C_OBJS = $(subst .c,.o,$(C_SRC))
#CXX_OBJS = $(CXX_SRC:%.cpp=%.o)
CXX_OBJS = $(subst .cpp,.o,$(CXX_SRC))
ALL_OBJ = $(C_OBJS) $(CXX_OBJS)

##把所有c文件编译生成.o文件
## $< --第一个依赖文件;$@ --目标文件
%.o:%.c
	$(CC) $(CFLAGS) -c $< -o $@ $(INC_DIR)

##把所有cpp文件编译生成.o文件
%.o:%.cpp
	$(XX) $(CFLAGS) -c $< -o $@ $(INC_DIR)

##目标文件,依赖OBJS中的.o文件
##all--伪目标,$^--所有依赖文件
all: $(TARGET)
$(TARGET): $(ALL_OBJ)
	$(XX) $^ -o $(TARGET) $(INC_DIR) $(LIB_DIR) $(LIB_DEPENDS)
	chmod a+x $(TARGET)

##安装命令	
install: all
	mkdir -p $(INSTALL_DIR)
	cp -R $(TARGET) $(INSTALL_DIR)
	
##执行make clean操作
clean:
	rm -rf *.o  $(TARGET)

##指定哪些是伪目标,作用防止有这样的文件存在冲突,导致makefile不执行
.PHONY: all clean distclean install

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值