为什么qmake忽略-spec标志?

3

我在构建机上有许多不同的VS实例,因此我正在使用-spec标志告诉qmake生成正确类型的项目。不幸的是,Qt似乎忽略它并继续使用错误的编译器:

[01:51:01][Step 1/2] Starting: C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin\qmake.exe -spec win32-msvc2013 -tp vc Fixer.pro
[01:51:01][Step 1/2] in directory: C:\TeamCity\buildAgent4\work\d1b6b25e39f4d573\src\Fixer
[01:51:02][Step 1/2] WARNING: Generator: MSVC.NET: Found more than one version of Visual Studio, but none in your path! Fallback to lowest version (MSVC.NET 2013 (12.0), MSVC.NET 2012 (11.0), MSVC.NET 2010 (10.0))
[01:51:02][Step 1/2] Process exited with code 0

为什么会出现这种情况?有没有办法强制它使用我想要的VS版本?
注意:我实际上并没有安装VS2010。我已经卸载了它,但是qmake似乎仍然能够找到它。

这个问题一年后还没有解决吗? - László Papp
1个回答

1
这是因为您似乎安装了几个Visual Studio版本,分别是(MSVC.NET 2013(12.0),MSVC.NET 2012(11.0),MSVC.NET 2010(10.0)),根据您的错误消息。
为了解决这个问题,您需要将 PATH 变量设置为首先包含所需的Visual Studio。在这种特殊情况下,也就是基于传递给qmake的 -spec 选项的参数,应该使用VS2013。
这是一种解决方案,但您还可以通过在您的特殊情况下运行由VS2013安装的相应终端来解决此问题。如果您从开始菜单正确运行它,它将启动提示符并为您设置必要的环境。
希望这样可以澄清混淆。

1
明确设置“PATH”并不能解决问题:qmake仍然在抱怨。这是我正在使用的内容:“set path="C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin";"c:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin" qmake.exe -tp vc -spec win32-msvc2012 Fixer.pro”。 - Dmitri Nesteruk
@DmitriNesteruk:尝试使用右键设置中的环境变量在您的桌面上设置PATH变量。您还需要确保在cmd.exe中显式运行Visual Studio .bat脚本,因为Visual Studio终端也在运行,但最好是从开始菜单中直接运行专用终端。这样做可以吗? - László Papp
@DmitriNesteruk:你看到我写的内容了吗?你还需要从相应的安装中运行相关的vcs批处理文件。我想你可能忽略了这一点。这很重要! - László Papp
的确如此。这是一张截图以作说明:http://postimg.org/image/lfrv19lqf/ - Dmitri Nesteruk
@DmitriNesteruk:嗯,我明白了。这真的很奇怪,我必须承认。 :) - László Papp
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接