如何在基于qmake的Qt项目中使用CuteLogger
非CMake场景集成CuteLogger操作指南
核心逻辑很简单:你之前CMake项目能跑通,本质是因为CuteLogger是纯源码级的Qt工具类库,没有绑定特定构建系统,只要把源码正确纳入构建流程、配好头文件路径、满足Qt元对象编译要求,不管什么构建系统都能直接用,不需要额外特殊处理。
通用前置准备(所有非CMake场景通用)
先把你现有CMake项目里已经验证可用的CuteLogger源码文件夹完整拷贝到新项目的指定位置,不需要保留文件夹里自带的CMake配置文件,后面的编译逻辑交给qmake或者Visual Studio自己处理。
整理需要纳入编译的文件清单:
- 核心必选文件(实现基础控制台日志功能):
- 头文件:
Logger.h、AbstractAppender.h、ConsoleAppender.h - 源文件:
Logger.cpp、AbstractAppender.cpp、ConsoleAppender.cpp
- 头文件:
- 可选扩展文件(用到对应功能再加):
- 文件日志类:
FileAppender.h/cpp、RollingFileAppender.h/cpp - ETW日志类:
OpenHDMSHandler.h/cpp
- 文件日志类:
注意:所有上述带Q_OBJECT宏的类,构建时必须启用Qt元对象编译器(MOC)扫描,和你项目里自己的Qt类编译要求完全一致
场景1:qmake 项目集成
全程只需要修改项目下的.pro配置文件,不需要额外编译第三方库:
- 配置头文件搜索路径:假设你把CuteLogger源码放在项目根目录下的
thirdparty/logger文件夹,就在.pro里加一行路径配置:INCLUDEPATH += $$PWD/thirdparty/logger - 把前面整理好的所有CuteLogger头文件、源文件,追加到项目的编译列表里,和你自己的业务代码写在一起就行:
SOURCES += \ main.cpp \ thirdparty/logger/Logger.cpp \ thirdparty/logger/AbstractAppender.cpp \ thirdparty/logger/ConsoleAppender.cpp HEADERS += \ thirdparty/logger/Logger.h \ thirdparty/logger/AbstractAppender.h \ thirdparty/logger/ConsoleAppender.h - 确认项目已经引入Qt Core依赖:在
.pro文件里确保有QT += core配置(大部分默认Qt项目已经自带这行,漏了补上就行)
配置完成后,重新执行qmake、构建项目即可,你现在写的main.cpp代码完全不需要改动,运行效果和CMake版本完全一致。
场景2:Visual Studio 项目集成
仅针对安装了Qt Visual Studio Tools插件的VS开发环境(未装插件的环境无法自动处理Qt元对象编译,不推荐)
- 把CuteLogger源码放在VS项目的指定路径下,在解决方案资源管理器里右键你的项目 -> 添加 -> 现有项,把前面整理好的所有CuteLogger头文件、源文件全部选上,加入项目
- 配置头文件包含路径:右键项目 -> 属性 -> C/C++ -> 常规 -> 附加包含目录,把CuteLogger源码所在的文件夹路径加进去,配置要应用到Debug/Release、x64/Win32等所有构建配置
- 确认MOC扫描规则生效:Qt VS Tools插件会自动识别带Q_OBJECT宏的头文件,生成对应的元对象代码,不需要手动改配置
- 确认Qt Core库已经正常链接:检查项目属性的链接器输入配置,确保对应Qt版本的Core库(如Qt5Core.lib、Qt6Core.lib)已经在依赖列表里,和你普通Qt VS项目的配置保持一致
配置完成后直接重新生成解决方案即可,main.cpp代码同样不需要任何修改。
常见踩坑排查
- 编译报找不到头文件:优先检查附加包含目录的路径是否写对,有没有遗漏CuteLogger的源码文件夹
- 链接报
vtable for xxx类错误:说明MOC工具没有扫描到对应类的头文件,检查对应头文件是否正确加入项目、Qt VS Tools的MOC功能是否正常启用- 运行时日志输出乱码:和CMake版本表现一致时不需要额外调整,检查控制台编码配置即可
内容的提问来源于stack exchange,提问作者KcFnMi
相关产品推荐
相关产品推荐

