Qtservice是QT用于开发后台服务的库,目前支持window和类unix(包含linux)。之前qtservice源码编译不能通过,经过以下修改编译成功,生成的库在qtservice/lib目录下。
声明:只修改了类unix部分,window部分未测试。
编译环境:操作系统Deepin20.2.4,开发工具 Qt6集成环境
一、下载URL
https://github.com/qtproject/qt-solutions/tree/master/qtservice
二、适配Qt6修改记录
1、qtservice.pro
取消QT_QTSERVICE_EXPORT宏定义
#DEFINES += QT_QTSERVICE_EXPORT
unix构造配置增加debug
#unix:CONFIG += release
unix:CONFIG += debug_and_release build_all
编译生成目录设置为../lib,取消OBJECTS_DIR和MOC_DIR设置
# DESTDIR = ../../../../run/bin64
# OBJECTS_DIR = ../../../../obj/release64/vz/qtservice
# MOC_DIR = ../../../../obj/release64/vz/qtservice
DESTDIR = ../lib
2、qtservice.cpp
// d_ptr->serviceFlags = 0;
d_ptr->serviceFlags = ServiceFlag::Default;
此处0改为ServiceFlag::Default
3、qtservice_unix.cpp
// void incomingConnection(int socketDescriptor);
void incomingConnection(qintptr socketDescriptor);
......
//void QtServiceSysPrivate::incomingConnection(int socketDescriptor) {
void QtServiceSysPrivate::incomingConnection(qintptr socketDescriptor) {
此2处的函数参数类型由int改为qintptr,与父类QTcpServer的同名函数声明保持一致