QtCreator qmake 无法运行编译器'cl'
QtCreator qmake Cannot run compiler 'cl'
刚刚使用 MSVS 2017 和 Qt5.9.1 配置了新的 windows 环境。
构建示例项目时 bars
遇到错误
Project ERROR: Cannot run compiler 'cl'. Maybe you forgot to setup the environment?
使用 mingw build 和 运行 没问题。
我尝试在 qmake
之前添加 自定义构建步骤
"C:\Program Files (x86)\Microsoft Visual Studio17\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.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 Studio17\Professional\VC\Tools\MSVC.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.9.1\msvc2017_64\include -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtDataVisualization -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtWidgets -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtGui -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtANGLE -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtCore -Irelease -I..\..\..\Devel\Qt\Qt5.9.1.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.9.1\msvc2017_64\include -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtDataVisualization -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtWidgets -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtGui -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtANGLE -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtCore -Irelease -I..\..\..\Devel\Qt\Qt5.9.1.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 Studio17\Professional\VC\Tools\MSVC.11.25503\bin\HostX86\x86\link.EXE"' : return code '0x458'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\VC\Tools\MSVC.11.25503\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.
C:\Users\Admin\source>
链接错误。 但是cl.exe
找到了。
接下来的步骤一切正常。
- 为 QtCreator 设置德古拉风格 :)
- 修改 MSVS 安装添加 VC++ 2015.3 v140 桌面工具集 (x86,x64)。
很奇怪。这就是我不喜欢 windows 的原因。它过着自己的生活!
所以答案是尝试REINSTALL/modify个组件,包括QtCreator本身。
我有一个类似的情况,通过将 cl.exe 的路径添加到路径环境变量中解决了:
set path=%path%;%qtdir%\bin;"C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.12.25827\bin\Hostx64\x64"
set QMakeSpec=win32-msvc
qmake -tp vc
也许另一个 cl.exe 在干扰这里?
只是重启。它帮助了我。可能完成 Visual Studio 或 Qt 的安装。
这是适用于已安装或已经安装 NVMW 的任何人的解决方案:
在我的工作笔记本电脑和私人 PC 上无法使用 Qt 一年之后,我 终于 想出了如何如果您在任何时候为 Windows 安装了 Node.js 版本管理器,请修复它:
我在我的用户目录中找到了文件 %HOMEPATH%\cmd_auto_run.cmd
(感谢 ),它一直在不断地将 PATH
变量重置为常量字符串,覆盖我之前所做的任何更改making到系统环境变量。此文件的路径是在 HKCU\SOFTWARE\Microsoft\Command Processor\Autorun
下的 Windows 注册表中设置的
打开文件后,我只是在 =
符号之后添加了一个 %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 Studio19\BuildTools\VC\Tools\MSVC.27.29110\bin\Hostx64\x64
C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.16.27023\bin\Hostx64\x64
C:\Program Files (x86)\Windows Kits\bin.0.19041.0\x64
然后我重新启动 Qt,它再次找到了所有项目的文件,我可以像以前一样编译它。
这是 Windows 的 Node.js 版本管理器 NVMW 的问题。 2015 年有一个 issue on a repo on GitHub,但尚未修复,主要回购已存档。这是有史以来最令人沮丧的事情!我可能花了 20 多个小时才积极修复它,所以我希望我能帮助像我一样挣扎的人。
我在使用 VC2019 和 Qt 6.0.2 的 Windows 10 上遇到了同样的问题。
当我开始时
Start->Visual Studio 2019->x64 Native Tools Command prompt
我在控制台中看到一条错误消息 window 类似
"\ is syntactically not correct"
这是由于在系统设置->系统->扩展中设置的 %path% 变量末尾的反斜杠引起的...
我删除了这个反斜杠,然后“x64 Native Tools Command prompt”打开没有错误,并且在重新启动 qtCreator 项目后构建没有错误。
不幸的是,在修复此问题后,我无法再重现它。
刚刚使用 MSVS 2017 和 Qt5.9.1 配置了新的 windows 环境。
构建示例项目时 bars
遇到错误
Project ERROR: Cannot run compiler 'cl'. Maybe you forgot to setup the environment?
使用 mingw build 和 运行 没问题。
我尝试在 qmake
之前添加 自定义构建步骤"C:\Program Files (x86)\Microsoft Visual Studio17\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.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 Studio17\Professional\VC\Tools\MSVC.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.9.1\msvc2017_64\include -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtDataVisualization -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtWidgets -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtGui -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtANGLE -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtCore -Irelease -I..\..\..\Devel\Qt\Qt5.9.1.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.9.1\msvc2017_64\include -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtDataVisualization -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtWidgets -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtGui -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtANGLE -I..\..\..\Devel\Qt\Qt5.9.1.9.1\msvc2017_64\include\QtCore -Irelease -I..\..\..\Devel\Qt\Qt5.9.1.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 Studio17\Professional\VC\Tools\MSVC.11.25503\bin\HostX86\x86\link.EXE"' : return code '0x458'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio17\Professional\VC\Tools\MSVC.11.25503\bin\HostX86\x86\nmake.exe"' : return code '0x2'
Stop.
C:\Users\Admin\source>
链接错误。 但是cl.exe
找到了。
接下来的步骤一切正常。
- 为 QtCreator 设置德古拉风格 :)
- 修改 MSVS 安装添加 VC++ 2015.3 v140 桌面工具集 (x86,x64)。
很奇怪。这就是我不喜欢 windows 的原因。它过着自己的生活!
所以答案是尝试REINSTALL/modify个组件,包括QtCreator本身。
我有一个类似的情况,通过将 cl.exe 的路径添加到路径环境变量中解决了:
set path=%path%;%qtdir%\bin;"C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.12.25827\bin\Hostx64\x64"
set QMakeSpec=win32-msvc
qmake -tp vc
也许另一个 cl.exe 在干扰这里?
只是重启。它帮助了我。可能完成 Visual Studio 或 Qt 的安装。
这是适用于已安装或已经安装 NVMW 的任何人的解决方案:
在我的工作笔记本电脑和私人 PC 上无法使用 Qt 一年之后,我 终于 想出了如何如果您在任何时候为 Windows 安装了 Node.js 版本管理器,请修复它:
我在我的用户目录中找到了文件 %HOMEPATH%\cmd_auto_run.cmd
(感谢 PATH
变量重置为常量字符串,覆盖我之前所做的任何更改making到系统环境变量。此文件的路径是在 HKCU\SOFTWARE\Microsoft\Command Processor\Autorun
下的 Windows 注册表中设置的
打开文件后,我只是在 =
符号之后添加了一个 %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 Studio19\BuildTools\VC\Tools\MSVC.27.29110\bin\Hostx64\x64
C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.16.27023\bin\Hostx64\x64
C:\Program Files (x86)\Windows Kits\bin.0.19041.0\x64
然后我重新启动 Qt,它再次找到了所有项目的文件,我可以像以前一样编译它。
这是 Windows 的 Node.js 版本管理器 NVMW 的问题。 2015 年有一个 issue on a repo on GitHub,但尚未修复,主要回购已存档。这是有史以来最令人沮丧的事情!我可能花了 20 多个小时才积极修复它,所以我希望我能帮助像我一样挣扎的人。
我在使用 VC2019 和 Qt 6.0.2 的 Windows 10 上遇到了同样的问题。 当我开始时
Start->Visual Studio 2019->x64 Native Tools Command prompt
我在控制台中看到一条错误消息 window 类似
"\ is syntactically not correct"
这是由于在系统设置->系统->扩展中设置的 %path% 变量末尾的反斜杠引起的... 我删除了这个反斜杠,然后“x64 Native Tools Command prompt”打开没有错误,并且在重新启动 qtCreator 项目后构建没有错误。
不幸的是,在修复此问题后,我无法再重现它。