Qt 中 TARGET 名称包含点号的问题分析
在 Qt 项目中,TARGET 名称中包含点号(.)可能会导致应用名称被截断。这是由于 Qt 内部处理机制对点号有特殊处理,通常会将点号后的内容忽略或视为文件扩展名。
解决方法
方法一:使用连字符替代点号
将 TARGET 中的点号替换为连字符(-),例如:
qmake
TARGET = VCDS-Server
这样可以确保 applicationName() 和 applicationDisplayName() 正确显示完整名称。
方法二:显式设置应用名称
在代码中直接设置应用名称,覆盖 TARGET 的默认行为:
cpp
QCoreApplication::setApplicationName("VCDS.Server");
QCoreApplication::setApplicationDisplayName("VCDS.Server");
这种方式可以完全控制名称显示,不受 TARGET 格式限制。
方法三:修改 pro 文件补充设置
在 pro 文件中添加以下配置,显式定义应用名称:
qmake
TARGET = VCDS.Server
QMAKE_TARGET_PRODUCT = VCDS.Server
DEFINES += QT_APP_NAME=\\\"VCDS.Server\\\"
这种方法通过定义宏和变量,强制传递完整名称到编译结果中。
问题根源
Qt 在解析 TARGET 名称时,可能将点号视为分隔符,导致后续内容被忽略。这种设计可能是为了兼容文件系统命名习惯或历史遗留原因。连字符(-)和下划线(_)是更安全的替代符号。