Qt6.6.1中QStateMachine框架无法找到及CMake配置报错求助
解决Qt6中QStateMachine找不到的CMake配置问题
你的CMakeLists.txt存在两处关键错误,导致QStateMachine模块无法被正确识别:
错误1:重复调用find_package时遗漏StateMachine组件
第一个find_package(QT)指令已声明需要StateMachine和Widgets组件,但后续调用find_package(Qt${QT_VERSION_MAJOR})时仅指定了Widgets,这会导致CMake无法完整加载StateMachine模块的配置信息。
修复代码:
将第二行find_package修改为:
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets StateMachine)
错误2:链接库时硬编码Qt版本号
target_link_libraries中直接写死了Qt6::StateMachine,既破坏了Qt5/Qt6的兼容性,也会导致CMake无法通过版本变量正确匹配已找到的模块。
修复代码:
将链接语句修改为:
target_link_libraries(myProjectName PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::StateMachine)
额外检查项
- 确认Qt6.6.1安装时勾选了Qt State Machine模块,可在Qt Creator的「工具→选项→套件→Qt版本」中查看对应套件的已安装组件,若未安装需重新运行Qt安装器添加。
- 彻底删除项目的build文件夹,清理CMake缓存后重新配置编译,避免旧缓存残留导致的识别问题。
内容的提问来源于stack exchange,提问作者Haru
相关产品推荐
相关产品推荐

