c++ - 将 Qt 与 Visual Studio Code (Windows) 结合使用

标签 c++ qt visual-studio-code

已安装以下内容:

  • 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 概述:

技术指南:

技术指南中的步骤与您描述的问题非常相似;-)

关于c++ - 将 Qt 与 Visual Studio Code (Windows) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62467456/

相关文章:

用于比较任何无符号和有符号整数的 C++ 模板函数

c++ - 我们可以通过 D 总线访问数据成员和对象指针吗?

visual-studio-code - 找不到 Visual Studio Code 的 ESLint 配置

visual-studio-code - “运行代码”在 Visual Studio Code 中不起作用

javascript - 将 grunt 附加到 VSCODE 调试器

c++ - Qt:保存 Qt-creator 应用程序的 SQLite 数据库的最佳 "Path"在哪里?

c++ - 当我认为它不应该在 C++ 中时,正则表达式采用等号

c++ - Boost UDP 套接字的性能 - 吞吐量低?

c++ - QFileDialog unicode目录不可用

qt - QPixmap和SVG