C++ 为什么qmake会忽略-spec标志?

C++ 为什么qmake会忽略-spec标志?,c++,visual-studio,qt,qmake,C++,Visual Studio,Qt,Qmake,我在构建机器上有许多不同的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\buildAg

我在构建机器上有许多不同的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
似乎仍然能够找到它。

这是因为您似乎安装了几个Visual Studio版本,即

(MSVC.NET 2013(12.0)、MSVC.NET 2012(11.0)、MSVC.NET 2010(10.0))

根据您的错误消息

为了解决这个问题,您需要先设置
PATH
变量,使所需的Visual Studio位于其中。这意味着在这种特殊情况下,VS2013基于传递给qmake的
-spec
选项的参数

这是一种解决方案,但您也可以通过在特殊情况下运行VS2013安装的相应终端来解决此问题。如果从“开始”菜单正确运行,它将在为您设置必要的环境时启动提示


希望这能澄清困惑。

明确设置
路径
无助于解决问题:qmake仍在抱怨。下面是我正在使用的:
set path=“C:\Program Files(x86)\Microsoft Visual Studio 11.0\VC\bin”;“c:\Qt\Qt5.1.1\5.1.1\msvc2012\u 64\u opengl\bin\”qmake.exe-tp vc-spec win32-msvc2012 Fixer.pro
@dmitrinetheruk:尝试使用右键单击设置中的环境变量在桌面上设置PATH变量。您还需要确保在cmd.exe中显式运行visual studio终端正在运行的visual studio.bat脚本,但从“开始”菜单运行专用终端更容易。这行得通吗?我们在这里讨论的是构建服务器-它们为许多不同的构建提供服务,单方面设置
PATH
是不现实的。此外,即使这是一台dev机器,设置它也同样没有什么意义。令人惊奇的是,
qmake.exe
还检测到我没有的VS版本,比如VS2010。奇怪,只是很奇怪。@DmitriNesteruk:我不明白。您需要有一个命令提示符来构建东西,那么为什么不使用合适的命令提示符呢?这是哪个生成服务器?哈德逊?詹金斯还是别的什么?我用的是TeamCity,我也不懂。您说过设置路径可以消除正确的
.vcxproj
生成的歧义,但事实显然并非如此-即使在我设置了路径(我在批处理文件中执行此操作)之后,
qmake
调用仍然抱怨发现太多的VS版本。一年后这是否仍然没有解决??