CMakeLists.txt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. cmake_minimum_required (VERSION 3.9)
  2. project(JavaExportImport)
  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. find_package(Java COMPONENTS Development)
  7. # Wipe out the install tree to make sure the exporter works.
  8. add_custom_command(
  9. OUTPUT ${JavaExportImport_BINARY_DIR}/CleanupProject
  10. COMMAND ${CMAKE_COMMAND} -E remove_directory ${JavaExportImport_BINARY_DIR}/Root
  11. )
  12. add_custom_target(CleanupTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/CleanupProject)
  13. set_property(
  14. SOURCE ${JavaExportImport_BINARY_DIR}/CleanupProject
  15. PROPERTY SYMBOLIC 1
  16. )
  17. get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
  18. if(_isMultiConfig)
  19. set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
  20. else()
  21. if(CMAKE_BUILD_TYPE)
  22. set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
  23. else()
  24. set(NESTED_CONFIG_TYPE)
  25. endif()
  26. endif()
  27. configure_file(${JavaExportImport_SOURCE_DIR}/InitialCache.cmake.in
  28. ${JavaExportImport_BINARY_DIR}/InitialCache.cmake @ONLY)
  29. # Build the build exporter.
  30. add_custom_command(
  31. OUTPUT ${JavaExportImport_BINARY_DIR}/BuildExportProject
  32. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  33. --build-and-test
  34. ${JavaExportImport_SOURCE_DIR}/BuildExport
  35. ${JavaExportImport_BINARY_DIR}/BuildExport
  36. --build-noclean
  37. --build-project BuildExport
  38. --build-generator ${CMAKE_GENERATOR}
  39. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  40. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  41. --build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake
  42. VERBATIM
  43. )
  44. add_custom_target(BuildExportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/BuildExportProject)
  45. add_dependencies(BuildExportTarget CleanupTarget)
  46. set_property(
  47. SOURCE ${JavaExportImport_BINARY_DIR}/BuildExportProject
  48. PROPERTY SYMBOLIC 1
  49. )
  50. # Build and install the install exporter.
  51. add_custom_command(
  52. OUTPUT ${JavaExportImport_BINARY_DIR}/InstallExportProject
  53. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  54. --build-and-test
  55. ${JavaExportImport_SOURCE_DIR}/InstallExport
  56. ${JavaExportImport_BINARY_DIR}/InstallExport
  57. --build-noclean
  58. --build-project InstallExport
  59. --build-target install
  60. --build-generator ${CMAKE_GENERATOR}
  61. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  62. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  63. --build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake
  64. VERBATIM
  65. )
  66. add_custom_target(InstallExportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/InstallExportProject)
  67. add_dependencies(InstallExportTarget CleanupTarget)
  68. set_property(
  69. SOURCE ${JavaExportImport_BINARY_DIR}/InstallExportProject
  70. PROPERTY SYMBOLIC 1
  71. )
  72. # Build and install the importer.
  73. add_custom_command(
  74. OUTPUT ${JavaExportImport_BINARY_DIR}/ImportProject
  75. COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
  76. --build-and-test
  77. ${JavaExportImport_SOURCE_DIR}/Import
  78. ${JavaExportImport_BINARY_DIR}/Import
  79. --build-noclean
  80. --build-project Import
  81. --build-generator ${CMAKE_GENERATOR}
  82. --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
  83. --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
  84. --build-options
  85. -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake
  86. -DJavaBuildExportTest_DIR:PATH=${JavaExportImport_BINARY_DIR}/BuildExport
  87. -DJavaInstallExportTest_DIR:PATH=${JavaExportImport_BINARY_DIR}/Root/share/cmake
  88. VERBATIM
  89. )
  90. add_custom_target(ImportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/ImportProject)
  91. add_dependencies(ImportTarget BuildExportTarget InstallExportTarget)
  92. set_property(
  93. SOURCE ${JavaExportImport_BINARY_DIR}/ImportProject
  94. PROPERTY SYMBOLIC 1
  95. )
  96. add_executable(JavaExportImport main.c)
  97. add_dependencies(JavaExportImport ImportTarget)