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.
This commit is contained in:
David Cole 2011-11-02 08:03:12 -04:00
parent 54595e6d89
commit b297da615a
1 changed files with 12 additions and 0 deletions

View File

@ -6,15 +6,23 @@ macro(replace_flags var these those)
string(REGEX REPLACE "${these}" "${those}" ${var} "${${var}}") string(REGEX REPLACE "${these}" "${those}" ${var} "${${var}}")
#message(STATUS "info: ${var} changed to '${${var}}'") #message(STATUS "info: ${var} changed to '${${var}}'")
endif() endif()
message(STATUS "info: ${var}='${${var}}'")
endmacro() endmacro()
macro(msvc_link_to_static_crt) macro(msvc_link_to_static_crt)
if(MSVC) if(MSVC)
set(has_correct_flag 0)
foreach(lang C CXX) foreach(lang C CXX)
foreach(suffix "" _DEBUG _MINSIZEREL _RELEASE _RELWITHDEBINFO) foreach(suffix "" _DEBUG _MINSIZEREL _RELEASE _RELWITHDEBINFO)
replace_flags("CMAKE_${lang}_FLAGS${suffix}" "/MD" "/MT") replace_flags("CMAKE_${lang}_FLAGS${suffix}" "/MD" "/MT")
if(CMAKE_${lang}_FLAGS${suffix} MATCHES "/MT")
set(has_correct_flag 1)
endif()
endforeach() endforeach()
endforeach() endforeach()
if(NOT has_correct_flag)
message(FATAL_ERROR "no CMAKE_*_FLAGS var contains /MT")
endif()
endif() endif()
endmacro() endmacro()
@ -39,6 +47,10 @@ set(CMAKE_MFC_FLAG "@CMAKE_MFC_FLAG_VALUE@")
if("${CMAKE_MFC_FLAG}" STREQUAL "1") if("${CMAKE_MFC_FLAG}" STREQUAL "1")
msvc_link_to_static_crt() 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() endif()
add_executable(mfc1 WIN32 ${files}) add_executable(mfc1 WIN32 ${files})