CMakeLists.txt.in 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. cmake_minimum_required(VERSION 2.8)
  2. project(mfc1)
  3. macro(replace_flags var these those)
  4. if("${${var}}" MATCHES "${these}")
  5. string(REGEX REPLACE "${these}" "${those}" ${var} "${${var}}")
  6. #message(STATUS "info: ${var} changed to '${${var}}'")
  7. endif()
  8. message(STATUS "info: ${var}='${${var}}'")
  9. endmacro()
  10. macro(msvc_link_to_static_crt)
  11. if(MSVC)
  12. set(has_correct_flag 0)
  13. foreach(lang C CXX)
  14. foreach(suffix "" _DEBUG _MINSIZEREL _RELEASE _RELWITHDEBINFO)
  15. replace_flags("CMAKE_${lang}_FLAGS${suffix}" "/MD" "/MT")
  16. if(CMAKE_${lang}_FLAGS${suffix} MATCHES "/MT")
  17. set(has_correct_flag 1)
  18. endif()
  19. endforeach()
  20. endforeach()
  21. if(NOT has_correct_flag)
  22. message(FATAL_ERROR "no CMAKE_*_FLAGS var contains /MT")
  23. endif()
  24. endif()
  25. endmacro()
  26. set(files
  27. ChildFrm.cpp
  28. ChildFrm.h
  29. MainFrm.cpp
  30. MainFrm.h
  31. mfc1.cpp
  32. mfc1.h
  33. mfc1.rc
  34. mfc1Doc.cpp
  35. mfc1Doc.h
  36. mfc1View.cpp
  37. mfc1View.h
  38. Resource.h
  39. stdafx.cpp
  40. stdafx.h
  41. )
  42. set(CMAKE_MFC_FLAG "@CMAKE_MFC_FLAG_VALUE@")
  43. if("${CMAKE_MFC_FLAG}" STREQUAL "1")
  44. msvc_link_to_static_crt()
  45. else()
  46. # VS generators add this automatically based on the CMAKE_MFC_FLAG value,
  47. # but generators matching "Make" require:
  48. add_definitions(-D_AFXDLL)
  49. endif()
  50. add_executable(mfc1 WIN32 ${files})
  51. install(TARGETS mfc1 DESTINATION bin)
  52. if("${CMAKE_MFC_FLAG}" STREQUAL "2")
  53. set(CMAKE_INSTALL_MFC_LIBRARIES ON)
  54. include(InstallRequiredSystemLibraries)
  55. endif()