C / C++ 文件简单混编 + 轻量级日志系统使用
在项目工程里面,不一定全部是c或者c++文件,有时候是混合一起,这个时候如果使用makefile编译的话,就要考虑兼容两种类型的文件编译了; 实战经验如下:
根据自己的风格制作响应的打印和日志记录,makefile编写如下:
CC = gcc CPP = g++ #文件夹路径 ROOTPATH=. INCLUDE = -I./cfg/inc -I$(ROOTPATH)/easylogger/inc -I$(ROOTPATH)/easylogger/plugins/file LIB=-lpthread # c文件和c++文件混编要加 LDFLAGS=-lstdc++ #.c文件目录 COBJS += $(patsubst %.c, %.o, $(wildcard *.c)) COBJS += $(patsubst %.c, %.o, $(wildcard $(ROOTPATH)/easylogger/src/*.c)) COBJS += $(patsubst %.c, %.o, $(wildcard $(ROOTPATH)/easylogger/plugins/file/elog_file.c)) COBJS += $(patsubst %.c, %.o, $(wildcard easylogger/port/*.c)) COBJS += $(patsubst %.c, %.o, $(wildcard cfg/port/*.c)) #.cpp文件目录 CPPSRCS:=$(wildcard *.cpp ./*.cpp) CPPOBJS := $(CPPSRCS:.cpp=.o) # 目标文件 BIN=EasyLoggerLinuxDemo CFLAGS = -O0 -g3 -Wall all:$(BIN) # c目标文件生成 $(COBJS) : %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ $(INCLUDE) mv $@ out # cpp目标文件生成 $(CPPOBJS) : %.o: %.cpp $(CPP) $(CFLAGS) -c $< -o $@ $(INCLUDE) mv $@ out # 目标文件生成依赖 $(BIN):$(COBJS) $(CPPOBJS) $(CC) out/*.o $(CFLAGS) $(LDFLAGS) $(LIB) -o $(BIN) mv $(BIN) out clean: rm -rf out/*
完整源码链接: 项目目录预览 - 开源项目 - GitCode
越努力,越幸运
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端