无qtchooser配置时CMake调用qmlcachegen找不到Qt的责任问询
问题1解答
这个不属于操作系统层面的责任,实际是Linux发行版的Qt打包策略决定的。绝大多数支持多Qt版本并行安装的发行版(比如Debian、Ubuntu及其衍生版),默认不会创建全局default.conf,目的是避免不同Qt版本的全局配置冲突,给同时需要Qt4、Qt5、Qt6开发的用户造成干扰。如果需要全局默认Qt版本,用户可以自行在对应路径创建配置文件,部分发行版也提供了交互命令(如update-alternatives)可以一键切换默认Qt版本。
问题2解答
这个责任不在CMake本身,而属于Qt官方提供的Qt5QuickCompiler CMake模块的设计缺陷。CMake本身只是执行Qt提供的模块逻辑,而Qt的该模块在调用qmlcachegen时,没有将find_package阶段获取到的Qt路径作为环境变量或参数传递给qmlcachegen,才会出现你遇到的问题。
临时修复方案
你可以通过以下任一方法快速解决当前问题:
- 执行CMake配置命令时直接携带环境变量:
QT_SELECT=5 cmake -DCMAKE_PREFIX_PATH=/path/to/qt 其他参数..
- 在CMakeLists.txt的
find_package(Qt5QuickCompiler)之前添加环境变量设置:
set(ENV{QT_SELECT} 5)
- 手动修改系统中
Qt5QuickCompilerConfig.cmake的qmlcachegen调用逻辑,给执行命令前缀加上env QT_SELECT=5。
内容的提问来源于stack exchange,提问作者sf033
相关产品推荐
相关产品推荐

