From d1f4db39c8fc80bab2566cc06d6bcfc0a541b248 Mon Sep 17 00:00:00 2001 From: Jan Haller Date: Sat, 31 Oct 2020 11:59:06 +0100 Subject: [PATCH] Link legacy_stdio_definitions.lib on newer MSVC -- fixes linker errors for sprintf() & Co. Starting from Visual Studio 2015, some standard symbols are inlined and thus no longer linkable. Code that was linked against earlier versions can use a compatibility library, as described here: https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp?view=msvc-160#libraries --- src/SFML/Graphics/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/SFML/Graphics/CMakeLists.txt b/src/SFML/Graphics/CMakeLists.txt index 14c48ea9b..139703c0c 100644 --- a/src/SFML/Graphics/CMakeLists.txt +++ b/src/SFML/Graphics/CMakeLists.txt @@ -117,6 +117,12 @@ elseif(SFML_OS_IOS) target_link_libraries(sfml-graphics PRIVATE z bz2) endif() +# starting from Visual Studio 2015, inline versions of some C functions are used; for compatibility link this library +# see https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp?view=msvc-160#libraries +if(SFML_COMPILER_MSVC AND MSVC_VERSION GREATER_EQUAL 1900) + target_link_libraries(sfml-graphics PRIVATE legacy_stdio_definitions.lib) +endif() + sfml_find_package(Freetype INCLUDE "FREETYPE_INCLUDE_DIRS" LINK "FREETYPE_LIBRARY") target_link_libraries(sfml-graphics PRIVATE Freetype)