From 504eeea5148510645a884688d04434373054d501 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 10 Jan 2020 00:26:27 +0100 Subject: [PATCH] Map MinSizeRel and RelWithDebInfo correctly (#6393) * Map MinSizeRel and RelWithDebInfo to Release by default * switch to CMAKE_CONFIGURATION_TYPES * changed mapping slightly * add empty list element to the mapping * more comments and an option to turn verbose messages on. * removed line info. It would require the file name to make sense out of it. --- scripts/buildsystems/vcpkg.cmake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 87a206eb11..e549f3fa11 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -1,6 +1,10 @@ # Mark variables as used so cmake doesn't complain about them mark_as_advanced(CMAKE_TOOLCHAIN_FILE) +# VCPKG toolchain options. +option(VCPKG_VERBOSE "Enables messages from the VCPKG toolchain for debugging purposes." OFF) +mark_as_advanced(VCPKG_VERBOSE) + # Determine whether the toolchain is loaded during a try-compile configuration get_property(_CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE) @@ -22,6 +26,24 @@ if(VCPKG_TOOLCHAIN) return() endif() +if(DEFINED CMAKE_CONFIGURATION_TYPES) #Generating with a multi config generator + #If CMake does not have a mapping for MinSizeRel and RelWithDebInfo in imported targets + #it will map those configuration to the first valid configuration in CMAKE_CONFIGURATION_TYPES. + #By default this is the debug configuration which is wrong. + if(NOT DEFINED CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL) + set(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL "MinSizeRel;Release;") + if(VCPKG_VERBOSE) + message(STATUS "VCPKG-Info: CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL set to MinSizeRel;Release;") + endif() + endif() + if(NOT DEFINED CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO) + set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RelWithDebInfo;Release;") + if(VCPKG_VERBOSE) + message(STATUS "VCPKG-Info: CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO set to RelWithDebInfo;Release;") + endif() + endif() +endif() + if(VCPKG_TARGET_TRIPLET) elseif(CMAKE_GENERATOR_PLATFORM MATCHES "^[Ww][Ii][Nn]32$") set(_VCPKG_TARGET_TRIPLET_ARCH x86)