From a6fd2fd7b8f704d8728dcc2d33fe86d1fd9873fe Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 18 Oct 2017 15:37:05 +0200
Subject: [PATCH] [CMake] Fixed Conan issues on Windows.

---
 scripts/cmake/CMakeSetup.cmake    | 2 +-
 scripts/cmake/CompilerSetup.cmake | 4 ----
 scripts/cmake/ConanSetup.cmake    | 5 +++++
 scripts/cmake/conan/conan.cmake   | 2 +-
 4 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake
index 87dcfe20d49..81f7e346758 100644
--- a/scripts/cmake/CMakeSetup.cmake
+++ b/scripts/cmake/CMakeSetup.cmake
@@ -18,7 +18,7 @@ if(NOT PROJECT_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
     set(OGS_BUILD_CLI OFF CACHE BOOL "" FORCE)
 endif()
 
-if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+if(NOT CMAKE_BUILD_TYPE AND (NOT CMAKE_CONFIGURATION_TYPES OR OGS_USE_CONAN))
     message(STATUS "Setting build type to 'Debug' as none was specified.")
     set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
     set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake
index e7cda0f899a..e8f69dfb66c 100644
--- a/scripts/cmake/CompilerSetup.cmake
+++ b/scripts/cmake/CompilerSetup.cmake
@@ -1,7 +1,5 @@
 include(ResetConfigurations)        # To Debug, Release, RelWithDebInfo
-include(SetDefaultBuildType)
 include(DisableCompilerFlag)
-SET_DEFAULT_BUILD_TYPE(Debug)
 include(MSVCMultipleProcessCompile) # /MP switch (multi processor) for VS
 set(CMAKE_OSX_ARCHITECTURES "x86_64")
 
@@ -138,8 +136,6 @@ if(WIN32)
         set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} \
             /ZI /Od /Ob0")
 
-        set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
-
         DisableCompilerFlag(DEBUG /RTC1)
     # cygwin
     else()
diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake
index 2af05fceeda..c25a6c86bac 100644
--- a/scripts/cmake/ConanSetup.cmake
+++ b/scripts/cmake/ConanSetup.cmake
@@ -2,6 +2,11 @@ if(NOT OGS_USE_CONAN)
     return()
 endif()
 
+if(CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
+    message(FATAL_ERROR "Multi-config generators are not yet supported when "
+        "using Conan. Specify CMAKE_BUILD_TYPE!")
+endif()
+
 set(OGS_QT_VERSION 5.6.2)
 if((${CMAKE_CXX_COMPILER_ID} STREQUAL AppleClang) AND
     (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 8.3))
diff --git a/scripts/cmake/conan/conan.cmake b/scripts/cmake/conan/conan.cmake
index 6b8e36d8137..6bf355531a0 100644
--- a/scripts/cmake/conan/conan.cmake
+++ b/scripts/cmake/conan/conan.cmake
@@ -176,7 +176,7 @@ function(conan_cmake_detect_vs_runtime result)
     string(TOUPPER ${CMAKE_BUILD_TYPE} build_type)
     set(variables CMAKE_CXX_FLAGS_${build_type} CMAKE_C_FLAGS_${build_type} CMAKE_CXX_FLAGS CMAKE_C_FLAGS)
     foreach(variable ${variables})
-        string(REPLACE " " ";" flags ${variable})
+        string(REPLACE " " ";" flags ${${variable}})
         foreach (flag ${flags})
             if(${flag} STREQUAL "/MD" OR ${flag} STREQUAL "/MDd" OR ${flag} STREQUAL "/MT" OR ${flag} STREQUAL "/MTd")
                 string(SUBSTRING ${flag} 1 -1 runtime)
-- 
GitLab