|
|
|
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}>")
|