From b297da615aa2331a558a1c9aa8864e4db3e1f39a Mon Sep 17 00:00:00 2001 From: David Cole Date: Wed, 2 Nov 2011 08:03:12 -0400 Subject: [PATCH] Tests: Fix MFC test w/ Make-based generators (#11213) An explicit add_definitions of _AFXDLL is required for shared library builds with non-Visual Studio generators. --- Tests/MFC/CMakeLists.txt.in | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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})