如何指定qmake应定位的Windows SDK版本?

时间:2018-03-04 21:29:48

标签: qt qmake

我的PC上安装了Visual Studio 2017社区版。 最近我安装了Qt5.10.1。 我从一个示例.pro文件中生成了一个VS项目:

qmake -tp vc cube.pro

然而,当我打开这个VS项目并构建它时,我收到错误:

找不到Windows SDK版本8.1。安装所需版本的Windows SDK或在项目属性页中更改SDK版本,或右键单击解决方案并选择"重新定位解决方案"。

如何为所有qmake指定Windows SDK 10.0而不是8.1的目标,以便每次使用qmake生成VS项目时都不必手动重新定位?

2 个答案:

答案 0 :(得分:2)

您无法从qmake中选择Windows SDK版本。 qmake期望在运行之前正确设置环境。

如果直接使用命令行,您将看到以下消息:Remember to call vcvarsall.bat to complete environment setup!。 这意味着您必须使用正确的选项运行 vcvarsall.bat来设置MSVC工具链,包括您选择的Windows SDK版本。

一些例子:

# MSVC 2017 for 64 bit 
vcvarsall.bat amd64
# MSVC 2017 for 64 bit using Windows 8.1 SDK
vcvarsall.bat amd64 8.1
# MSVC 2017 for 64 bit using Windows 10 SDK version 10.0.10240.0
vcvarsall.bat amd64 10.0.10240.0
# MSVC 2015 (installed with 2017 installer) for 64 bit using Windows 10 SDK version 10.0.10240.0
vcvarsall.bat amd64 10.0.10240.0 -vcvars_ver=14.0

来自vcvarsall.bat的帮助消息:

Syntax:
    vcvarsall.bat [arch] [platform_type] [winsdk_version] [-vcvars_ver=vc_version]
where :
    [arch]: x86 | amd64 | x86_amd64 | x86_arm | x86_arm64 | amd64_x86 | amd64_arm | amd64_arm64
    [platform_type]: {empty} | store | uwp
    [winsdk_version] : full Windows 10 SDK number (e.g. 10.0.10240.0) or "8.1" to use the Windows 8.1 SDK.
    [vc_version] : {none} for default VS 2017 VC++ compiler toolset |
                   "14.0" for VC++ 2015 Compiler Toolset |
                   "14.1x" for the latest 14.1x.yyyyy toolset installed (e.g. "14.11") |
                   "14.1x.yyyyy" for a specific full version number (e.g. 14.11.25503)

The store parameter sets environment variables to support Universal Windows Platform application
development and is an alias for 'uwp'.

For example:
    vcvarsall.bat x86_amd64
    vcvarsall.bat x86_amd64 10.0.10240.0
    vcvarsall.bat x86_arm uwp 10.0.10240.0
    vcvarsall.bat x86_arm onecore 10.0.10240.0 -vcvars_ver=14.0
    vcvarsall.bat x64 8.1
    vcvarsall.bat x64 store 8.1

如果你使用Qt Creator,那你就不走运了。 Qt Creator只检测已安装的MSVC工具链,但没有提供任何方法来为vcvarsall.bat调用添加选项或手动添加MSVC工具链。

答案 1 :(得分:0)

请先阅读 Benjamin T 的回答。此答案详细说明了如何使用 class Solution { public boolean isPalindrome(String s) { char[] c = s.toCharArray(); for (int i=0, j=c.length-1; i<j;) { if (!Character.isLetter(c[i])) i++; else if (!Character.isLetter(c[j])) j--; else if (Character.isLetter(c[i++])!=Character.isLetter(c[j--])) { // c[i++], c[j--] ??? return false; } } return true; } }

对其进行配置

QtCreator 允许指定传递给 QtCreator 的参数。转到工具 > 选项 > 工具包 > 编译器:

  • 克隆所需的自动检测编译器
  • Initialization的最后一个字段中填写所需的Windows SDK版本: enter image description here
  • 可选:更新名称以便在下一步中轻松找到它
  • 在 Kits > Kits 下,将编译器更改为您新创建的编译器(对于所需的 Kits)。