CMakeLists.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. cmake_minimum_required (VERSION 3.9)
  2. project(MacRuntimePath)
  3. if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
  4. set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}")
  5. endif()
  6. # Wipe out the install tree to make sure the exporter works.
  7. add_custom_command(
  8. OUTPUT ${MacRuntimePath_BINARY_DIR}/CleanupProject
  9. COMMAND ${CMAKE_COMMAND} -E remove_directory ${MacRuntimePath_BINARY_DIR}/Root
  10. )
  11. add_custom_target(CleanupTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/CleanupProject)
  12. set_property(
  13. SOURCE ${MacRuntimePath_BINARY_DIR}/CleanupProject
  14. PROPERTY SYMBOLIC 1
  15. )
  16. configure_file(${MacRuntimePath_SOURCE_DIR}/InitialCache.cmake.in
  17. ${MacRuntimePath_BINARY_DIR}/InitialCache.cmake @ONLY)
  18. get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
  19. if(_isMultiConfig)
  20. set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
  21. else()
  22. if(CMAKE_BUILD_TYPE)
  23. set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
  24. else()
  25. set(NESTED_CONFIG_TYPE)
  26. endif()
  27. endif()
  28. # Build and install the exporter.
  29. add_custom_command(
  30. OUTPUT ${MacRuntimePath_BINARY_DIR}/ExportProject
  31. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  32. --build-and-test
  33. ${MacRuntimePath_SOURCE_DIR}/A
  34. ${MacRuntimePath_BINARY_DIR}/A
  35. --build-noclean
  36. --build-project MacRuntimePath_A
  37. --build-target install
  38. --build-generator ${CMAKE_GENERATOR}
  39. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  40. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  41. --build-options -C${MacRuntimePath_BINARY_DIR}/InitialCache.cmake
  42. VERBATIM
  43. )
  44. add_custom_target(ExportTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/ExportProject)
  45. add_dependencies(ExportTarget CleanupTarget)
  46. set_property(
  47. SOURCE ${MacRuntimePath_BINARY_DIR}/ExportProject
  48. PROPERTY SYMBOLIC 1
  49. )
  50. # Build the importer.
  51. add_custom_command(
  52. OUTPUT ${MacRuntimePath_BINARY_DIR}/ImportProject
  53. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  54. --build-and-test
  55. ${MacRuntimePath_SOURCE_DIR}/B
  56. ${MacRuntimePath_BINARY_DIR}/B
  57. --build-noclean
  58. --build-project MacRuntimePath_B
  59. --build-generator ${CMAKE_GENERATOR}
  60. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  61. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  62. --build-options -C${MacRuntimePath_BINARY_DIR}/InitialCache.cmake
  63. VERBATIM
  64. )
  65. add_custom_target(ImportTarget ALL DEPENDS ${MacRuntimePath_BINARY_DIR}/ImportProject)
  66. add_dependencies(ImportTarget ExportTarget)
  67. set_property(
  68. SOURCE ${MacRuntimePath_BINARY_DIR}/ImportProject
  69. PROPERTY SYMBOLIC 1
  70. )