CMakeLists.txt.in 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. FIND_PACKAGE(MFC)
  44. IF (NOT MFC_FOUND)
  45. MESSAGE(FATAL_ERROR "MFC Could not be found during the MFC test")
  46. ENDIF()
  47. if("${CMAKE_MFC_FLAG}" STREQUAL "1")
  48. msvc_link_to_static_crt()
  49. else()
  50. # VS generators add this automatically based on the CMAKE_MFC_FLAG value,
  51. # but generators matching "Make" require:
  52. add_definitions(-D_AFXDLL)
  53. endif()
  54. add_executable(mfc1 WIN32 ${files})
  55. install(TARGETS mfc1 DESTINATION bin)
  56. if("${CMAKE_MFC_FLAG}" STREQUAL "2")
  57. set(CMAKE_INSTALL_MFC_LIBRARIES ON)
  58. include(InstallRequiredSystemLibraries)
  59. endif()