Good question. I must admit the thought of linking the wrong configuration on Windows so easily doesn't really please me. But you have convincing points, the way of Qt seems to be much better than I first thought.
However it would be nice if there were at least a more or less simple option to perform additional checks on user side. Currently I see no way to ensure correct debug/release libraries, except to parse the FindSFML variables. Maybe a SFML_RELEASE_FOUND and SFML_DEBUG_FOUND which are true when all components of the corresponding configuration are available. I have such a use case in mind (it would primarily apply to MinGW):
# Note: multi-configuration generators are already covered by
# SFML_LIBRARIES which contains "optimized" and "debug" keywords
if(WIN32 AND NOT CMAKE_CONFIGURATION_TYPES)
if(NOT SFML_DEBUG_FOUND AND CMAKE_BUILD_TYPE STREQUAL "Debug")
message(FATAL_ERROR "Trying to link SFML debug libraries which haven't been found")
elseif(NOT SFML_RELEASE_FOUND AND CMAKE_BUILD_TYPE STREQUAL "Release")
message(FATAL_ERROR "Trying to link SFML release libraries which haven't been found")
endif()
endif()
What do you think about that? Do you see a simpler solution to address this problem, while keeping your initial strategy?