MSVC: Use dubbed FH4 to make C++ exception handling smaller
Visual Studio 2019 introduced the dubbed FH4 feature which can make C++ exception handling smaller on x64. According to the article [1], it's enabled by default for UWP applications, and Microsoft also use it in their own widely-known commercial products such as Office to reduce the binary size. So make use of this feature for Qt when possible, to get smaller binary. As a drive-by, add "/EHs-c-" explicitly to the flags when we want to disable C++ exception handling. [1] Official article that introduces dubbed FH4: https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/ Change-Id: I2e3330de477f78372cf7903d0ef7a732b09552a9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: André de la Rocha <andre.rocha@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This commit is contained in:
parent
83f2f27bb6
commit
5074344c9c
@ -148,16 +148,19 @@ function(qt_internal_set_exceptions_flags target exceptions_on)
|
||||
if(exceptions_on)
|
||||
if(MSVC)
|
||||
set(_flag "/EHsc")
|
||||
if(MSVC_VERSION GREATER_EQUAL 1929)
|
||||
set(_flag ${_flag} "/d2FH4")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
set(_defs "QT_NO_EXCEPTIONS")
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||
set(_flag "/wd4530" "/wd4577")
|
||||
set(_flag "/EHs-c-" "/wd4530" "/wd4577")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|AppleClang|InteLLLVM")
|
||||
set(_flag "-fno-exceptions")
|
||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
if (MSVC)
|
||||
set(_flag "/wd4530" "/wd4577")
|
||||
set(_flag "/EHs-c-" "/wd4530" "/wd4577")
|
||||
else()
|
||||
set(_flag "-fno-exceptions")
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user