Use CMake property to drive static linking
Using a newer CMake version allows us to make use of the MSVC_RUNTIME_LIBRARY added in CMake 3.15, which handles static linking of the runtime library with MSVC a lot simpler
This commit is contained in:
parent
2f49f1ef92
commit
4970af8999
@ -207,17 +207,6 @@ if(SFML_OS_WINDOWS)
|
|||||||
if(BUILD_SHARED_LIBS AND SFML_USE_STATIC_STD_LIBS)
|
if(BUILD_SHARED_LIBS AND SFML_USE_STATIC_STD_LIBS)
|
||||||
message(FATAL_ERROR "BUILD_SHARED_LIBS and SFML_USE_STATIC_STD_LIBS cannot be used together")
|
message(FATAL_ERROR "BUILD_SHARED_LIBS and SFML_USE_STATIC_STD_LIBS cannot be used together")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# for VC++, we can apply it globally by modifying the compiler flags
|
|
||||||
if((SFML_COMPILER_MSVC OR (SFML_COMPILER_CLANG AND NOT MINGW)) AND SFML_USE_STATIC_STD_LIBS)
|
|
||||||
foreach(flag
|
|
||||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
|
||||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
||||||
if(${flag} MATCHES "/MD")
|
|
||||||
string(REGEX REPLACE "/MD" "/MT" ${flag} "${${flag}}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# setup Mac OS X stuff
|
# setup Mac OS X stuff
|
||||||
|
@ -115,20 +115,25 @@ macro(sfml_add_library module)
|
|||||||
)
|
)
|
||||||
target_sources(${target} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${target}.rc")
|
target_sources(${target} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${target}.rc")
|
||||||
source_group("" FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.rc")
|
source_group("" FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.rc")
|
||||||
else()
|
|
||||||
set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -d)
|
if (SFML_COMPILER_GCC OR SFML_COMPILER_CLANG)
|
||||||
endif()
|
|
||||||
if (SFML_OS_WINDOWS AND (SFML_COMPILER_GCC OR SFML_COMPILER_CLANG))
|
|
||||||
# on Windows + gcc/clang get rid of "lib" prefix for shared libraries,
|
# on Windows + gcc/clang get rid of "lib" prefix for shared libraries,
|
||||||
# and transform the ".dll.a" suffix into ".a" for import libraries
|
# and transform the ".dll.a" suffix into ".a" for import libraries
|
||||||
set_target_properties(${target} PROPERTIES PREFIX "")
|
set_target_properties(${target} PROPERTIES PREFIX "")
|
||||||
set_target_properties(${target} PROPERTIES IMPORT_SUFFIX ".a")
|
set_target_properties(${target} PROPERTIES IMPORT_SUFFIX ".a")
|
||||||
endif()
|
endif()
|
||||||
|
else()
|
||||||
|
set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -d)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -s-d)
|
set_target_properties(${target} PROPERTIES DEBUG_POSTFIX -s-d)
|
||||||
set_target_properties(${target} PROPERTIES RELEASE_POSTFIX -s)
|
set_target_properties(${target} PROPERTIES RELEASE_POSTFIX -s)
|
||||||
set_target_properties(${target} PROPERTIES MINSIZEREL_POSTFIX -s)
|
set_target_properties(${target} PROPERTIES MINSIZEREL_POSTFIX -s)
|
||||||
set_target_properties(${target} PROPERTIES RELWITHDEBINFO_POSTFIX -s)
|
set_target_properties(${target} PROPERTIES RELWITHDEBINFO_POSTFIX -s)
|
||||||
|
|
||||||
|
if (SFML_USE_STATIC_STD_LIBS)
|
||||||
|
set_property(TARGET ${target} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# set the version and soversion of the target (for compatible systems -- mostly Linuxes)
|
# set the version and soversion of the target (for compatible systems -- mostly Linuxes)
|
||||||
@ -276,6 +281,10 @@ macro(sfml_add_example target)
|
|||||||
add_executable(${target} ${target_input})
|
add_executable(${target} ${target_input})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (SFML_USE_STATIC_STD_LIBS)
|
||||||
|
set_property(TARGET ${target} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_warnings(${target})
|
set_target_warnings(${target})
|
||||||
|
|
||||||
# set the debug suffix
|
# set the debug suffix
|
||||||
|
Loading…
Reference in New Issue
Block a user