已安装以下内容:
- Visual Studio 代码 (1.45.1)
- Visual Studio 2019 社区(为了使用 MSVC
cl.exe
编译器) - Qt 5.15.0(安装到C:\Qt)
Visual Studio Code 在运行 Visual Studio 命令提示符
后启动,以便为 cl.exe
正确设置环境。 ms-vscode.cpptools
扩展已安装在 Visual Studio Code 中,includePath
设置为:
"includePath": [
"${workspaceFolder}/**",
"${INCLUDE}",
"C:/Qt/5.15.0/msvc2019_64/include/**"
],
此文件 hw.cpp
编译并运行良好:
#include <iostream>
int main()
{
std::cout << "Hello world!";
return 0;
}
tasks.json
中使用的命令是:
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
或者,从 Visual Studio Code 的内置终端,命令“cl/EHsc/MD/O2 hw.cpp/link/out:hw.exe”正确编译所有内容,hw.exe
可以执行。
但是当我尝试按如下方式使用 Qt 时,它无法编译:
#include <QString>
int main()
{
QString test("Hello world!");
qDebug() << test;
return 0;
}
编译器报告“fatal error C1083: Cannot open include file: 'QString': No such file or directory”。 IntelliSense 确实找到了 QString.h,当我按下 Ctrl 并单击 QString
(在顶部)时它会打开。
我错过了什么?
更新
感谢@rioV8 的评论,我研究了cl.exe
的/link
选项。任务参数已更新为:
"args": [
"/EHsc",
"/MD",
"/O2",
"/IC:\\Qt\\5.15.0\\msvc2019_64\\include",
"/IC:\\Qt\\5.15.0\\msvc2019_64\\include\\QtCore",
"${file}",
"/link",
"/LIBPATH:C:\\Qt\\5.15.0\\msvc2019_64\\lib",
"Qt5Core.lib",
"qtmain.lib",
"/OUT:${fileDirname}\\${fileBasenameNoExtension}.exe"
],
这稍微改善了一些事情。 hw.cpp
现在编译并生成 hw.obj
,但现在我收到链接器错误(每个 .lib
一个):
warning LNK4272: library machine type 'x64' conflicts with target machine type 'x86'
紧随其后的是 fatal error LNK1120:2 个 Unresolved external 问题
。
越走越近,却依然联系不上。
最佳答案
最近KDAB博客上有详细的攻略。
面向 Qt 开发人员的 VS Code 概述:
技术指南:
- https://www.kdab.com/using-visual-studio-code-for-qt-apps-pt-1/
- https://www.kdab.com/using-visual-studio-code-for-qt-apps-pt-2/
技术指南中的步骤与您描述的问题非常相似;-)
关于c++ - 将 Qt 与 Visual Studio Code (Windows) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62467456/