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:
parent
54595e6d89
commit
b297da615a
|
@ -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})
|
||||
|
|
Loading…
Reference in New Issue