From 52a99a67f7cc832d5fbf65c362b8fbdb5d16e6bb Mon Sep 17 00:00:00 2001
From: Petr Klima
Date: Wed, 8 Nov 2023 03:22:52 +1100
Subject: [PATCH] Set PDB path for Visual Studio (#3702)
Ensure the PDB files are output into the same directory and with the same name
as the static library when using Visual Studio.
Resolves fmtlib#3701.
---
CMakeLists.txt | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2a54b5f..485eb86c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -312,7 +312,15 @@ set(FMT_DEBUG_POSTFIX d CACHE STRING "Debug library postfix.")
set_target_properties(fmt PROPERTIES
VERSION ${FMT_VERSION} SOVERSION ${CPACK_PACKAGE_VERSION_MAJOR}
PUBLIC_HEADER "${FMT_HEADERS}"
- DEBUG_POSTFIX "${FMT_DEBUG_POSTFIX}")
+ DEBUG_POSTFIX "${FMT_DEBUG_POSTFIX}"
+
+ # Workaround for Visual Studio 2017:
+ # Ensure the .pdb is created with the same name and in the same directory
+ # as the .lib. Newer VS versions already do this by default, but there is no
+ # harm in setting it for those too. Ignored by other generators.
+ COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
+ COMPILE_PDB_NAME "fmt"
+ COMPILE_PDB_NAME_DEBUG "fmt${FMT_DEBUG_POSTFIX}")
# Set FMT_LIB_NAME for pkg-config fmt.pc. We cannot use the OUTPUT_NAME target
# property because it's not set by default.