You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cmake/Tests/MFC/CMakeLists.txt.in

71 lines
1.7 KiB

cmake_minimum_required(VERSION 3.5)
project(mfc1)
macro(replace_flags var these those)
if("${${var}}" MATCHES "${these}")
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()
set(files
ChildFrm.cpp
ChildFrm.h
MainFrm.cpp
MainFrm.h
mfc1.cpp
mfc1.h
mfc1.rc
mfc1Doc.cpp
mfc1Doc.h
mfc1View.cpp
mfc1View.h
Resource.h
stdafx.cpp
stdafx.h
)
set(CMAKE_MFC_FLAG "@CMAKE_MFC_FLAG_VALUE@")
FIND_PACKAGE(MFC)
IF (NOT MFC_FOUND)
MESSAGE(FATAL_ERROR "MFC Could not be found during the MFC test")
ENDIF()
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})
install(TARGETS mfc1 DESTINATION bin)
if("${CMAKE_MFC_FLAG}" STREQUAL "2")
set(CMAKE_INSTALL_MFC_LIBRARIES ON)
include(InstallRequiredSystemLibraries)
endif()
# Encode the value inside a generator expression to test evaluation.
set(CMAKE_MFC_FLAG "$<1:${CMAKE_MFC_FLAG}>")