CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. cmake_minimum_required (VERSION 2.7.20090711)
  2. project(ExportImport C CXX)
  3. # Wipe out the install tree to make sure the exporter works.
  4. add_custom_command(
  5. OUTPUT ${ExportImport_BINARY_DIR}/CleanupProject
  6. COMMAND ${CMAKE_COMMAND} -E remove_directory ${ExportImport_BINARY_DIR}/Root
  7. )
  8. add_custom_target(CleanupTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/CleanupProject)
  9. set_property(
  10. SOURCE ${ExportImport_BINARY_DIR}/CleanupProject
  11. PROPERTY SYMBOLIC 1
  12. )
  13. if(CMAKE_CONFIGURATION_TYPES)
  14. set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
  15. else()
  16. if(CMAKE_BUILD_TYPE)
  17. set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
  18. else()
  19. set(NESTED_CONFIG_TYPE)
  20. endif()
  21. endif()
  22. if(MINGW OR MSYS)
  23. # Test CMAKE_GNUtoMS whether we have VS or not.
  24. set(ExportImport_GNUtoMS 1)
  25. endif()
  26. configure_file(${ExportImport_SOURCE_DIR}/InitialCache.cmake.in
  27. ${ExportImport_BINARY_DIR}/InitialCache.cmake @ONLY)
  28. # Build and install the exporter.
  29. add_custom_command(
  30. OUTPUT ${ExportImport_BINARY_DIR}/ExportProject
  31. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  32. --build-and-test
  33. ${ExportImport_SOURCE_DIR}/Export
  34. ${ExportImport_BINARY_DIR}/Export
  35. --build-noclean
  36. --build-project Export
  37. --build-target install
  38. --build-generator ${CMAKE_GENERATOR}
  39. --build-makeprogram ${CMAKE_MAKE_PROGRAM}
  40. --build-options -C${ExportImport_BINARY_DIR}/InitialCache.cmake
  41. )
  42. add_custom_target(ExportTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/ExportProject)
  43. add_dependencies(ExportTarget CleanupTarget)
  44. set_property(
  45. SOURCE ${ExportImport_BINARY_DIR}/ExportProject
  46. PROPERTY SYMBOLIC 1
  47. )
  48. # Build and install the importer.
  49. add_custom_command(
  50. OUTPUT ${ExportImport_BINARY_DIR}/ImportProject
  51. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  52. --build-and-test
  53. ${ExportImport_SOURCE_DIR}/Import
  54. ${ExportImport_BINARY_DIR}/Import
  55. --build-noclean
  56. --build-project Import
  57. --build-generator ${CMAKE_GENERATOR}
  58. --build-makeprogram ${CMAKE_MAKE_PROGRAM}
  59. --build-options -C${ExportImport_BINARY_DIR}/InitialCache.cmake
  60. )
  61. add_custom_target(ImportTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/ImportProject)
  62. add_dependencies(ImportTarget ExportTarget)
  63. set_property(
  64. SOURCE ${ExportImport_BINARY_DIR}/ImportProject
  65. PROPERTY SYMBOLIC 1
  66. )
  67. add_executable(ExportImport main.c)
  68. add_dependencies(ExportImport ImportTarget)