【问题标题】:Why is qmake ignoring the -spec flag?为什么 qmake 忽略 -spec 标志?
【发布时间】:2023-04-01 17:08:01
【问题描述】:

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

【问题讨论】:

  • 一年后这个问题还没有解决吗??

标签: c++ visual-studio qt qmake


【解决方案1】:

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

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

根据您的错误消息。

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

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

希望这能澄清困惑。

【讨论】:

  • 明确设置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
  • @DmitriNesteruk:尝试使用右键单击设置中的环境变量在桌面上设置 PATH 变量。您还需要确保在 cmd.exe 中显式运行 Visual Studio .bat 脚本,Visual Studio 终端也在运行,但从开始菜单运行专用终端更容易。有效果吗?
  • 我们在这里讨论的是构建服务器——它们提供许多不同的构建,并且单方面设置PATH 是不现实的。此外,即使这是一台开发机器,设置它也同样没有意义。令人惊奇的是,qmake.exe 还检测到我 没有 拥有的 VS 版本,例如 VS2010。很奇怪,很奇怪。
  • @DmitriNesteruk:我不关注。您需要有一个命令提示符来构建东西,那么为什么不使用正确的命令提示符呢?这是哪个构建服务器?哈德逊?詹金斯还是别的什么?
  • 我正在使用 TeamCity,但我也不关注。您说设置路径消除了正确.vcxproj 的生成,但这显然不是这种情况-即使在我设置了PATH(我在批处理文件中执行此操作)之后,qmake 调用仍然 抱怨发现太多 VS 版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2021-12-14
  • 2018-10-31
  • 2019-01-14
相关资源
最近更新 更多