diff --git a/Tests/MFC/CMakeLists.txt.in b/Tests/MFC/CMakeLists.txt.in index 06ba8b3f8..e6bfabd33 100644 --- a/Tests/MFC/CMakeLists.txt.in +++ b/Tests/MFC/CMakeLists.txt.in @@ -6,15 +6,23 @@ macro(replace_flags var these those) string(REGEX REPLACE "${these}" "${those}" ${var} "${${var}}") #message(STATUS "info: ${var} changed to '${${var}}'") endif() + message(STATUS "info: ${var}='${${var}}'") endmacro() macro(msvc_link_to_static_crt) if(MSVC) + set(has_correct_flag 0) foreach(lang C CXX) foreach(suffix "" _DEBUG _MINSIZEREL _RELEASE _RELWITHDEBINFO) replace_flags("CMAKE_${lang}_FLAGS${suffix}" "/MD" "/MT") + if(CMAKE_${lang}_FLAGS${suffix} MATCHES "/MT") + set(has_correct_flag 1) + endif() endforeach() endforeach() + if(NOT has_correct_flag) + message(FATAL_ERROR "no CMAKE_*_FLAGS var contains /MT") + endif() endif() endmacro() @@ -39,6 +47,10 @@ set(CMAKE_MFC_FLAG "@CMAKE_MFC_FLAG_VALUE@") if("${CMAKE_MFC_FLAG}" STREQUAL "1") msvc_link_to_static_crt() +else() + # VS generators add this automatically based on the CMAKE_MFC_FLAG value, + # but generators matching "Make" require: + add_definitions(-D_AFXDLL) endif() add_executable(mfc1 WIN32 ${files})