CONFIG(debug, debug|release){
win32-g++ {
versionAtLeast(QT_VERSION, 5.15.0) {
LIBS += -lqtadvanceddocking
}
else {
LIBS += -lqtadvanceddockingd
}
}
else:msvc {
LIBS += -lqtadvanceddockingd
}
else:mac {
LIBS += -lqtadvanceddocking_debug
}
else {
LIBS += -lqtadvanceddocking
}
}
else{
LIBS += -lqtadvanceddocking
}
unix:!macx {
LIBS += -lxcb
}
核心逻辑:Debug/Release模式区分
1. Debug模式配置
CONFIG(debug, debug|release) {
...
}
-
作用 :仅在Debug构建模式下生效,通过
CONFIG
变量检测当前配置。 -
平台与编译器分支:
-
win32-g++
(Windows + MinGW):versionAtLeast(QT_VERSION, 5.15.0) {
LIBS += -lqtadvanceddocking # Qt≥5.15 的Debug库无后缀
} else {
LIBS += -lqtadvanceddockingd # Qt<5.15 的Debug库需加"d"后缀
}
-
说明:Qt 5.15开始统一Debug/Release库命名(无后缀),旧版本需用"d"后缀区分。
else:msvc
(Windows + MSVC编译器):
LIBS += -lqtadvanceddockingd # MSVC传统用"d"后缀标识Debug库
说明:MSVC编译器生态中广泛采用"d"后缀(libQt5Cored.lib)
else:mac
(macOS平台):
LIBS += -lqtadvanceddocking_debug # macOS自定义Debug库命名
说明 :macOS库命名规则较灵活,此处显式指定_debug
后缀
else
(其他平台如Linux):
LIBS += -lqtadvanceddocking # 默认无后缀(多数Linux库命名统一)
Release模式配置
else {
LIBS += -lqtadvanceddocking # 所有平台Release模式均用无后缀库
}
说明:Release模式无需后缀,跨平台保持一致。
平台特定依赖:Linux/XCB链接
unix:!macx {
LIBS += -lxcb # Linux下显式链接XCB库
}
-
作用 :针对非macOS的Unix系统(主要是Linux),添加X Window系统依赖库
libxcb
。 -
语法解析:
-
unix
:匹配所有Unix-like系统(包括Linux/macOS)。 -
!macx
:排除macOS(macOS使用原生Cocoa API而非XCB)。
-
-
必要性:Qt GUI在Linux下依赖XCB实现窗口管理,需显式链接。
我的版本:
Windows msvc2019_64bit

对应进入这个分支
