3582116a60
...which represents the version of the MSVC platform toolset. This variable is used to set the platform toolset version in .vcxproj files. Before, the platform toolset version was determined in qmake's C++ code. Now, it's set next to where MSVC_VER is set in common mkspecs .conf files. This will simplify supporting new Visual Studio versions in the future. Change-Id: If78c921f93c6378829746d617c7e7d312174257e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
141 lines
4.4 KiB
Plaintext
141 lines
4.4 KiB
Plaintext
#
|
|
# qmake configuration for Microsoft Visual Studio C/C++ Compiler
|
|
# This file is used by win32-msvc
|
|
#
|
|
|
|
#
|
|
# Version-specific changes
|
|
#
|
|
|
|
isEmpty(QMAKE_MSC_VER): error("msvc-version.conf loaded but QMAKE_MSC_VER isn't set")
|
|
|
|
MSVC_VER = 8.0
|
|
COMPAT_MKSPEC = win32-msvc2005
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1499) {
|
|
# Visual Studio 2008 (9.0) / Visual C++ 15.0 and up
|
|
MSVC_VER = 9.0
|
|
MSVC_TOOLSET_VER = 90
|
|
COMPAT_MKSPEC = win32-msvc2008
|
|
QMAKE_CFLAGS_MP = -MP
|
|
QMAKE_CXXFLAGS_MP = $$QMAKE_CFLAGS_MP
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1599) {
|
|
# Visual Studio 2010 (10.0) / Visual C++ 16.0 and up
|
|
MSVC_VER = 10.0
|
|
MSVC_TOOLSET_VER = 100
|
|
COMPAT_MKSPEC = win32-msvc2010
|
|
MAKEFILE_GENERATOR = MSBUILD
|
|
|
|
QMAKE_CFLAGS_AVX = -arch:AVX
|
|
QMAKE_CFLAGS_AVX2 = -arch:AVX
|
|
|
|
VCPROJ_EXTENSION = .vcxproj
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1699) {
|
|
# Visual Studio 2012 (11.0) / Visual C++ 17.0 and up
|
|
MSVC_VER = 11.0
|
|
MSVC_TOOLSET_VER = 110
|
|
COMPAT_MKSPEC = win32-msvc2012
|
|
QMAKE_CXXFLAGS_EXCEPTIONS_OFF = /wd4530 /wd4577
|
|
QT_CONFIG += c++11
|
|
CONFIG += c++11
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1799) {
|
|
# Visual Studio 2013 (12.0) / Visual C++ 18.0 and up
|
|
MSVC_VER = 12.0
|
|
MSVC_TOOLSET_VER = 120
|
|
COMPAT_MKSPEC = win32-msvc2013
|
|
QMAKE_CFLAGS += -FS
|
|
QMAKE_CXXFLAGS += -FS -Zc:rvalueCast -Zc:inline
|
|
|
|
QMAKE_CFLAGS_F16C = -arch:AVX
|
|
QMAKE_CFLAGS_RDRND =
|
|
QMAKE_CFLAGS_RDSEED =
|
|
|
|
equals(QMAKE_MSC_VER, 1800) {
|
|
QMAKE_CFLAGS_RELEASE += -Zc:strictStrings
|
|
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings
|
|
QMAKE_CXXFLAGS_RELEASE += -Zc:strictStrings
|
|
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -Zc:strictStrings
|
|
}
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1899) {
|
|
# Visual Studio 2015 (14.0) / Visual C++ 19.0 and up
|
|
MSVC_VER = 14.0
|
|
MSVC_TOOLSET_VER = 140
|
|
COMPAT_MKSPEC = win32-msvc2015
|
|
QMAKE_CFLAGS += -Zc:strictStrings
|
|
QMAKE_CFLAGS_WARN_ON += -w44456 -w44457 -w44458
|
|
QMAKE_CFLAGS_AVX2 = -arch:AVX2
|
|
QMAKE_CXXFLAGS += -Zc:strictStrings -Zc:throwingNew
|
|
QMAKE_CXXFLAGS_WARN_ON += -w44456 -w44457 -w44458 -wd4577 -wd4467
|
|
|
|
# -utf-8 compiler option for Visual Studio 2015 Update 2
|
|
greaterThan(QMAKE_MSC_FULL_VER, 190023918): QMAKE_CFLAGS_UTF8_SOURCE = -utf-8
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1909) {
|
|
# Visual Studio 2017 (15.0) / Visual C++ 19.10 and up
|
|
MSVC_VER = 15.0
|
|
MSVC_TOOLSET_VER = 141
|
|
COMPAT_MKSPEC = win32-msvc2017
|
|
QMAKE_CXXFLAGS += -permissive-
|
|
|
|
# Only Visual Studio 2017 version 15.3 / Visual C++ 19.11 & up have support
|
|
# for AVX-512. We enable the switches anyway and let configure check if they
|
|
# work.
|
|
QMAKE_CFLAGS_AVX512F = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512ER = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512CD = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512PF = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512DQ = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512BW = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512VL = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512IFMA = -arch:AVX512
|
|
QMAKE_CFLAGS_AVX512VBMI = -arch:AVX512
|
|
|
|
# MSVC partially supports the following, but '__cplusplus' definition is set
|
|
# as for C++98 until MSVC fully conforms with C++14, see
|
|
# https://developercommunity.visualstudio.com/content/problem/139261/msvc-incorrectly-defines-cplusplus.html
|
|
# Support became available in MSVC 2017 15.7:
|
|
greaterThan(QMAKE_MSC_VER, 1913) {
|
|
QMAKE_CXXFLAGS += -Zc:__cplusplus
|
|
QMAKE_CXXFLAGS_CXX14 = -std:c++14
|
|
QMAKE_CXXFLAGS_CXX1Z = -std:c++17
|
|
}
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1910) {
|
|
# No compat spec past MSVC 2017
|
|
COMPAT_MKSPEC =
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1919) {
|
|
# Visual Studio 2019 (16.0) / Visual C++ 19.20 and up
|
|
MSVC_VER = 16.0
|
|
MSVC_TOOLSET_VER = 142
|
|
QMAKE_CXXFLAGS_CXX2A = -std:c++latest
|
|
|
|
QMAKE_CXXFLAGS += -Zc:externConstexpr
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1927) {
|
|
# Visual Studio 2019 (16.8 or 16.9) / Visual C++ 19.28 and up
|
|
MSVC_VER = 16.8
|
|
QMAKE_CFLAGS_C11 = /std:c11
|
|
QMAKE_CFLAGS_C17 = /std:c17
|
|
}
|
|
|
|
greaterThan(QMAKE_MSC_VER, 1929) {
|
|
# Visual Studio 2022 (17.0) / Visual C++ 19.30 and up
|
|
MSVC_VER = 17.0
|
|
MSVC_TOOLSET_VER = 143
|
|
}
|
|
|
|
!isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC
|