From 658744e2224bc5b7a14208b3a7d8a4a9bfd50e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Mon, 12 Oct 2020 23:47:35 +0200 Subject: [PATCH] Update USE_MSVC_RUNTIME_LIBRARY_DLL for CMake 3.15 This makes USE_MSVC_RUNTIME_LIBRARY_DLL update the directory scope CMAKE_MSVC_RUNTIME_LIBRARY variable instead of CMAKE_C_FLAGS on CMake 3.15 and later. Solution proposed by @moritz-h. Fixes #1783. Closes #1796. (cherry picked from commit f4a73296049b432720c9b6c230e479f9b41d74d3) --- CMakeLists.txt | 6 +++++- README.md | 3 ++- docs/compile.dox | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a203cce..eb248c88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,8 +80,10 @@ if (MSVC) # Workaround for VS 2008 not shipping with stdint.h list(APPEND glfw_INCLUDE_DIRS "${GLFW_SOURCE_DIR}/deps/vs2008") endif() +endif() - if (NOT USE_MSVC_RUNTIME_LIBRARY_DLL) +if (MSVC AND NOT USE_MSVC_RUNTIME_LIBRARY_DLL) + if (${CMAKE_VERSION} VERSION_LESS 3.15) foreach (flag CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE @@ -96,6 +98,8 @@ if (MSVC) endif() endforeach() + else() + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() endif() diff --git a/README.md b/README.md index 5538a8a7..fe1d6634 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,8 @@ information on what to include when reporting a bug. ## Changelog -There is nothing here yet. + - [Win32] Bugfix: `USE_MSVC_RUNTIME_LIBRARY_DLL` had no effect on CMake 3.15 or + later (#1783,#1796) ## Contact diff --git a/docs/compile.dox b/docs/compile.dox index 8a4fb583..aa6f0f08 100644 --- a/docs/compile.dox +++ b/docs/compile.dox @@ -234,6 +234,10 @@ __USE_MSVC_RUNTIME_LIBRARY_DLL__ determines whether to use the DLL version or th static library version of the Visual C++ runtime library. If set to `ON`, the DLL version of the Visual C++ library is used. +@note On CMake 3.15 and later you can set the +[CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html) +variable instead of this option. + @anchor GLFW_USE_HYBRID_HPG __GLFW_USE_HYBRID_HPG__ determines whether to export the `NvOptimusEnablement` and `AmdPowerXpressRequestHighPerformance` symbols, which force the use of the