使用WSL和VS2019交叉编译Qt应用时qmake运行报错
问题分析
核心问题出在WSL环境下的qmake与VS2019的Qt VS Tools交互不兼容,以及项目配置未正确映射WSL的Qt资源:
- 头文件找不到:VS未识别到WSL中Qt的头文件位置
- qmake错误:WSL的qmake不支持生成Windows专属的
vcapp模板,且跨路径解析时出现IO权限/格式问题
解决步骤
1. 修正Qt VS Tools的WSL Qt版本配置
不要直接添加本地路径,通过远程连接关联WSL环境:
- 打开VS2019,进入
Tools > Options > Cross Platform > Connection Manager - 添加WSL连接,选择你的Ubuntu发行版,测试连接确保成功
- 回到
Qt VS Tools > Qt Versions,点击Add,选择Remote类型,关联刚才创建的WSL连接,定位到WSL中的qmake路径(/usr/lib/x86_64-linux-gnu/qt5/bin/qmake) - 确认该Qt版本的
Platform显示为Linux
2. 调整项目的WSL编译配置
创建项目时直接指定WSL为目标平台:
- 新建Qt Console Application,在向导的
Target Platforms勾选Linux (WSL),向导会自动关联WSL的Qt环境 - 若为已有项目,右键项目 >
Properties>Configuration Properties > General,将Platform Toolset改为WSL_xxxx(匹配你的WSL GCC版本),Platform设为x64/x86
3. 修复qmake模板不兼容问题
WSL的qmake仅支持Linux项目模板,修改.pro文件:
TEMPLATE = app TARGET = QtConsoleApplication1 QT += core SOURCES += main.cpp
- 删除
.vcxproj中自动生成的vcapp相关错误配置段
4. 确保路径映射正确
避免路径含空格/特殊字符,测试WSL中qmake的可用性:
- 将项目移至无空格路径(如
C:\Projects\QtConsoleApp) - 在WSL终端手动测试:
cd /mnt/c/Projects/QtConsoleApp qmake -o Makefile QtConsoleApplication1.pro
若能生成Makefile,说明路径和qmake本身无问题,问题出在VS配置
5. 手动配置头文件路径
若自动配置失效,手动添加WSL的Qt头文件路径:
- 右键项目 >
Properties>Configuration Properties > C/C++ > General - 在
Additional Include Directories中添加:\\wsl$\Ubuntu\usr\include\qt5(替换Ubuntu为你的WSL发行版名称) - 勾选
Recursive包含子目录
额外建议
- 尽量保持Windows和WSL的Qt版本一致,避免小版本差异带来的潜在兼容性问题
- 更新VS2019到最新版本,确保Qt VS Tools和WSL组件为最新状态
内容的提问来源于stack exchange,提问作者Nils Mügge
相关产品推荐
相关产品推荐

