【问题标题】:QtCreator qmake Cannot run compiler 'cl'QtCreator qmake 无法运行编译器'cl'
【发布时间】:2017-10-04 15:51:03
【问题描述】:

刚刚使用 MSVS 2017 和 Qt5.9.1 配置了新的 windows 环境。
在构建示例项目bars 时遇到错误

Project ERROR: Cannot run compiler 'cl'. Maybe you forgot to setup the environment?

使用 mingw 构建并运行良好。


我尝试在 qmake

之前添加 自定义构建步骤
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64

但得到了相同的结果。在cmd 中,此命令工作正常。之后cl.exe 就可以访问了。


所有工具集都是由 Qt 自动找到的,并且似乎是正确的

这里是截图


更新1。内置 VS 2017 的开发人员命令提示符

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.0.26730.16
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************

C:\Users\Admin\source>"C:\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\bin\qmake.exe" C:\Devel\Qt\Qt5.9.1\Examples\Qt-5.9.1\datavisualization\bars\bars.pro -spec win32-msvc

C:\Users\Admin\source>nmake

Microsoft (R) Program Maintenance Utility Version 14.11.25508.2
Copyright (C) Microsoft Corporation.  All rights reserved.

        "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX86\x86\nmake.exe" -f Makefile.Release

Microsoft (R) Program Maintenance Utility Version 14.11.25508.2
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_DATAVISUALIZATION_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I..\..\..\Devel\Qt\Qt5.9.1\Examples\Qt-5.9.1\datavisualization\bars -I. -I../../../include -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtDataVisualization -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtWidgets -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtGui -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtANGLE -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtCore -Irelease -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\mkspecs\win32-msvc -Forelease\ @C:\Users\Admin\AppData\Local\Temp\nm6ED7.tmp
main.cpp
graphmodifier.cpp
Generating Code...
        cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_DATAVISUALIZATION_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I..\..\..\Devel\Qt\Qt5.9.1\Examples\Qt-5.9.1\datavisualization\bars -I. -I../../../include -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtDataVisualization -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtWidgets -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtGui -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtANGLE -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\include\QtCore -Irelease -I..\..\..\Devel\Qt\Qt5.9.1\5.9.1\msvc2017_64\mkspecs\win32-msvc -Forelease\ @C:\Users\Admin\AppData\Local\Temp\nm7EF5.tmp
moc_graphmodifier.cpp
        link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:release\bars.exe @C:\Users\Admin\AppData\Local\Temp\nm8417.tmp
Qt5DataVisualization.lib(Qt5DataVisualization.dll) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'x86'
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX86\x86\link.EXE"' : return code '0x458'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.

C:\Users\Admin\source>

联动错误。 但是找到了cl.exe

【问题讨论】:

  • 尝试从控制台编译它,看看那里到底发生了什么。为此使用适当的 Visual Sudio 命令行
  • @Xplatforms,已更新。

标签: c++ qt visual-c++ visual-studio-2017 qt-creator


【解决方案1】:

我也遇到过类似的情况,通过将cl.exe的路径添加到path环境变量中解决了:

set path=%path%;%qtdir%\bin;"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\Hostx64\x64"
set QMakeSpec=win32-msvc
qmake -tp vc

也许另一个 cl.exe 在这里干扰?

【讨论】:

    【解决方案2】:

    这是适用于已安装或已安装 NVMW 的任何人的解决方案:

    在我的工作笔记本电脑和私人 PC 上无法使用 Qt 一年后,如果您安装了适用于 Windows 的 Node.js 版本管理器:

    我在我的用户目录中找到了文件%HOMEPATH%\cmd_auto_run.cmd(感谢this barely related SO answer),它一直在不断地将PATH 变量重置为常量字符串,覆盖我对系统环境变量所做的任何更改。此文件的路径在 Windows 注册表中的 HKCU\SOFTWARE\Microsoft\Command Processor\Autorun
    下设置 打开文件后,我只是在= 符号之后添加了一个%PATH%;,只是为了确保我删除了之后定义的所有重复路径。之后,这条线是这样的:

    SET "PATH=%PATH%;C:\Users\MYUSER\nvmw\nodejs\v15.2.1"
    

    然后,我将以下路径添加到名为 PATH 的系统环境变量中,用于 VS 构建工具(cl.exe 需要 - 为了安全起见,我添加了 2017 和 2019)和 Windows 10 SDK(需要对于 rc.exe):

    C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
    C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64
    

    然后我重新启动Qt,它又找到了项目的所有文件,我可以像以前一样编译它。

    这是 NVMW 的问题,它是一个适用于 Windows 的 Node.js 版本管理器。从 2015 年开始有一个 issue on a repo on GitHub,但它还没有被修复,主要的 repo 已经存档。这是有史以来最令人沮丧的事情,我可能花了 20 多个小时积极地修复它,所以我希望我能帮助像我一样一直在苦苦挣扎的人。

    【讨论】:

    • 完全正确 - 很好的调查!我花了很长时间寻找许多人面临的这个奇怪问题的原因。我可以看到 PATH 在 cmd 和 Powershell 中是不同的。我创建了不同的 Windows 用户帐户以确保 PATH 的管理出现问题,最后 - Qt 开始工作。顶部的樱桃是您的解决方案。非常感谢!
    • 这是我遇到过的最奇怪和最困难的问题之一,所以我很高兴能提供帮助 :)
    【解决方案3】:

    只需重新启动。它帮助了我。可能会完成 Visual Studio 或 Qt 的安装。

    【讨论】:

      【解决方案4】:

      在接下来的步骤之后一切正常。

      1. 为 QtCreator 设置 Dracula 样式:)
      2. 修改 MSVS 安装,添加 VC++ 2015.3 v140 桌面工具集(x86、x64)。

      很奇怪。这就是我不喜欢窗户的原因。它过着自己的生活!

      所以答案是尝试重新安装/修改组件,包括 QtCreator 本身。

      【讨论】:

      • “为 QtCreator 设置 Dracula 样式”是什么意思?
      • 让它变暗。只为外观。如果你按照我的方式,你可以省略这个选项。
      【解决方案5】:

      我在使用 VC2019 和 Qt 6.0.2 的 Windows 10 上遇到了同样的问题。 当我开始的时候

      开始->Visual Studio 2019->x64 Native Tools 命令提示符

      我在控制台窗口中看到一条错误消息,内容类似于

      "\ is syntactically not correct"
      

      这是由系统设置->系统->扩展中设置的 %path% 变量末尾的反斜杠引起的... 我删除了这个反斜杠,然后“x64 Native Tools Command prompt”打开没有错误,重新启动 qtCreator 项目后构建没有错误。

      不幸的是,在修复此问题后,我无法再重现它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        相关资源
        最近更新 更多