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

posted @   蔡头一枚  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示