1

我正在尝试使用 MSVC2019 套件构建 Qt 的模拟时钟示例,但是 Qt Creator 抱怨如下。我很好奇为什么需要 lld-link.exe,而我想使用 MSVC2019 作为编译器。

我觉得有趣的是在 Makefile.Debug 中,CC 和 CXX 设置为 clang-cl。

我可能会误解 Qt Creator / Qt Examples 如何使用 MSVC2019。

任何评论都非常感谢。

套件配置

在此处输入图像描述

工具 > 选项 > 套件 > 套件 在此处输入图像描述

工具 > 选项 > 工具包 > 编译器 在此处输入图像描述

编译输出

01:49:57: Running steps for project analogclock...
01:49:57: Starting: "C:\Qt\6.1.2\msvc2019_64\bin\qmake.exe" C:\Qt\Examples\Qt-6.1.2\widgets\widgets\analogclock\analogclock.pro -spec win32-clang-msvc "CONFIG+=debug"
01:49:57: The process "C:\Qt\6.1.2\msvc2019_64\bin\qmake.exe" exited normally.
01:49:57: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" -f C:/Qt/Examples/Qt-6.1.2/widgets/widgets/build-analogclock-Desktop_Qt_6_1_2_MSVC2019_64bit-Debug/Makefile qmake_all

jom 1.1.3 - empower your cores

01:49:57: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited normally.
01:49:57: Starting: "C:\Qt\Tools\QtCreator\bin\jom.exe" 
    C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
    clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30038 -Zi -MDd -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\analogclock.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\analogclock -I. -IC:\Qt\6.1.2\msvc2019_64\include -IC:\Qt\6.1.2\msvc2019_64\include\QtWidgets -IC:\Qt\6.1.2\msvc2019_64\include\QtGui -IC:\Qt\6.1.2\msvc2019_64\include\QtCore -Idebug -IC:/VulkanSDK/1.0.51.0/Include -IC:\Qt\6.1.2\msvc2019_64\mkspecs\win32-clang-msvc -Fodebug\ @C:\Users\MIKE-~1\AppData\Local\Temp\analogclock.obj.3280.0.jom
    clang-cl -BxC:\Qt\6.1.2\msvc2019_64\bin\qmake.exe -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30038 -Zi -MDd -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -E C:\Qt\6.1.2\msvc2019_64\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h
    C:\Qt\6.1.2\msvc2019_64\bin\moc.exe -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB --compiler-flavor=msvc --include C:/Qt/Examples/Qt-6.1.2/widgets/widgets/build-analogclock-Desktop_Qt_6_1_2_MSVC2019_64bit-Debug/debug/moc_predefs.h -IC:/Qt/6.1.2/msvc2019_64/mkspecs/win32-clang-msvc -IC:/Qt/Examples/Qt-6.1.2/widgets/widgets/analogclock -IC:/Qt/6.1.2/msvc2019_64/include -IC:/Qt/6.1.2/msvc2019_64/include/QtWidgets -IC:/Qt/6.1.2/msvc2019_64/include/QtGui -IC:/Qt/6.1.2/msvc2019_64/include/QtCore -I. -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\ATLMFC\include" -I"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include" -I"C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" -I"C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" ..\analogclock\analogclock.h -o debug\moc_analogclock.cpp
    clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30038 -Zi -MDd -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\analogclock.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\analogclock -I. -IC:\Qt\6.1.2\msvc2019_64\include -IC:\Qt\6.1.2\msvc2019_64\include\QtWidgets -IC:\Qt\6.1.2\msvc2019_64\include\QtGui -IC:\Qt\6.1.2\msvc2019_64\include\QtCore -Idebug -IC:/VulkanSDK/1.0.51.0/Include -IC:\Qt\6.1.2\msvc2019_64\mkspecs\win32-clang-msvc -Fodebug\ @C:\Users\MIKE-~1\AppData\Local\Temp\main.obj.3280.63.jom
    clang-cl -c -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30038 -Zi -MDd -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\analogclock.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I..\analogclock -I. -IC:\Qt\6.1.2\msvc2019_64\include -IC:\Qt\6.1.2\msvc2019_64\include\QtWidgets -IC:\Qt\6.1.2\msvc2019_64\include\QtGui -IC:\Qt\6.1.2\msvc2019_64\include\QtCore -Idebug -IC:/VulkanSDK/1.0.51.0/Include -IC:\Qt\6.1.2\msvc2019_64\mkspecs\win32-clang-msvc -Fodebug\ @C:\Users\MIKE-~1\AppData\Local\Temp\moc_analogclock.obj.3280.344.jom
    lld-link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\analogclock.exe @C:\Users\MIKE-~1\AppData\Local\Temp\analogclock.exe.3280.2329.jom
'lld-link' is not recognized as an internal or external command,
operable program or batch file.
jom: C:\Qt\Examples\Qt-6.1.2\widgets\widgets\build-analogclock-Desktop_Qt_6_1_2_MSVC2019_64bit-Debug\Makefile.Debug [debug\analogclock.exe] Error 1
jom: C:\Qt\Examples\Qt-6.1.2\widgets\widgets\build-analogclock-Desktop_Qt_6_1_2_MSVC2019_64bit-Debug\Makefile [debug] Error 2
01:50:00: The process "C:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project analogclock (kit: Desktop Qt 6.1.2 MSVC2019 64bit)
When executing step "Make"
01:50:00: Elapsed time: 00:03.

生成文件.DEBUG

#############################################################################
# Makefile for building: analogclock
# Generated by qmake (3.1) (Qt 6.1.2)
# Project:  ..\analogclock\analogclock.pro
# Template: app
#############################################################################

MAKEFILE      = Makefile.Debug

EQ            = =

####### Compiler, tools and options

CC            = clang-cl
CXX           = clang-cl
DEFINES       = -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
CFLAGS        = -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30038 -Zi -MDd -utf-8 -W3 /Fddebug\analogclock.vc.pdb $(DEFINES)
CXXFLAGS      = -nologo -Zc:wchar_t -Wno-microsoft-enum-value -fms-compatibility-version=19.29.30038 -Zi -MDd -std:c++17 -utf-8 -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\analogclock.vc.pdb $(DEFINES)
INCPATH       = -I..\analogclock -I. -IC:\Qt\6.1.2\msvc2019_64\include -IC:\Qt\6.1.2\msvc2019_64\include\QtWidgets -IC:\Qt\6.1.2\msvc2019_64\include\QtGui -IC:\Qt\6.1.2\msvc2019_64\include\QtCore -Idebug -IC:/VulkanSDK/1.0.51.0/Include -IC:\Qt\6.1.2\msvc2019_64\mkspecs\win32-clang-msvc 
LINKER        = lld-link



4

2 回答 2

3

根据我对该问题的评论,为 MSVC2019 自动检测到的 Qt Kit 设置似乎使用了错误的编译器。虽然在 Windows 上使用 LLVM(clang)编译器当然是可能的,但我个人只使用“官方”LLVM 发行版(而不是 MSVC 中包含的任何发行版)来做到这一点。

无论如何,解决此问题的一种方法是手动添加正确的套件。最简单的方法应该是(根据问题中的屏幕截图):

  1. 在套件设置中,选择现有Desktop Qt6.1.2 MSVC2019 64bit套件。
  2. 使用Clone按钮创建它的副本,然后从列表中选择副本。
  3. 在副本中,只需更改要使用的两个 Compiler 选项Microsoft Visual C++ Compiler 16.10.31424.327 (amd64)(即使其中一个是用于“C”编译器的,它们都在名称中说“C++”也没关系)。
  4. 调整套件名称,以便您知道项目设置中的哪个。也许将损坏的自动检测到的套件名称更改为包含“LLVM”或“broken”或类似的名称以区分它。“确定”退出选项对话框。
  5. 现在在项目构建设置中,您将能够选择新添加的工具包。只需单击它即可启用它。您可能还想禁用损坏的套件(右键单击套件名称以显示菜单)。

请记住,Qt 6.1 的功能还不完整(并非 5.x 中的所有内容都已移植),尽管包含的示例应该可以工作。即将发布的 6.2 版本应该会更加完整,但仍然会破坏很多 5.x 的内容。要尝试与大多数现有 Qt 项目具有更大向后兼容性的更成熟的版本,请使用 5.12.x 或 5.15.x 版本。

于 2021-08-18T02:14:52.723 回答
1

显然我需要在我的 VS2019 安装中添加对 Clang/LLVM 的支持。

请遵循以下讨论的说明:

Visual Studio 中的 Clang/LLVM 支持

在 Windows 上,安装 Clang 工具很容易。只需获取“Clang 编译器 for Windows”,这是“使用 C++ 进行桌面开发”工作负载的可选组件。这将安装您在 Windows 上使用 Clang 开发所需的一切。

这是我通过 Visual Studio Installer 完成的

在此处输入图像描述

于 2021-08-18T09:40:50.750 回答