From 9a085bc46296cd844f2ea9dc1109c0c9a074e8d9 Mon Sep 17 00:00:00 2001 From: Karl Schultz Date: Tue, 24 Jan 2017 14:44:26 -0800 Subject: build: Turn on "treat warnings as errors" on Win Also address compiler warnings: - Suppress warnings for inconsistently redefined snprintf on Windows with Visual Studio < 2015. Warnings for preprocessor redefinitions are still enabled on VS 2015 because snprintf is not redefined on VS 2015. - Turn off "changed behavior" warning with Visual Studio < 2015 for using initializers in constructors. MSFT "fixed" some forms of these initializers so that they clear members instead of just leaving them alone. Since clearing is usually desired, this isn't a problem in most cases. But if an object is reinstantiated on top of an existing object, via placement new for example, the clearing may not be desired if the first object's data was meant to be preserved. We don't count on this behavior. - Suppress linker warning for linking the loader in debug build on Windows. This warning is for mismatched runtime libraries and causes extra code to be linked in only for debug builds. Ignoring the warning is generally regarded as better than the alternatives. Change-Id: I8b0e311d3c80a8dd9ac0cc95f764ed1123efa86f --- layers/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'layers') diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt index 52d13a7e..1e9623ad 100644 --- a/layers/CMakeLists.txt +++ b/layers/CMakeLists.txt @@ -1,5 +1,4 @@ cmake_minimum_required (VERSION 2.8.11) - if(CMAKE_SYSTEM_NAME STREQUAL "Windows") add_definitions(-DVK_USE_PLATFORM_WIN32_KHR -DWIN32_LEAN_AND_MEAN) set(DisplayServer Win32) @@ -122,6 +121,9 @@ if (WIN32) set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_CRT_SECURE_NO_WARNINGS") set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_CRT_SECURE_NO_WARNINGS /bigobj") set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_CRT_SECURE_NO_WARNINGS /bigobj") + # Turn off transitional "changed behavior" warning message for Visual Studio versions prior to 2015. + # The changed behavior is that constructor initializers are now fixed to clear the struct members. + add_compile_options("$<$,$,19>>:/wd4351>") else() set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wno-unused-function -Wno-sign-compare") -- cgit v1.2.3