cmake_minimum_required (VERSION 3.9) project(JavaExportImport) if(NOT DEFINED CMake_TEST_NESTED_MAKE_PROGRAM AND NOT CMAKE_GENERATOR MATCHES "Visual Studio") set(CMake_TEST_NESTED_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}") endif() find_package(Java COMPONENTS Development) # Wipe out the install tree to make sure the exporter works. add_custom_command( OUTPUT ${JavaExportImport_BINARY_DIR}/CleanupProject COMMAND ${CMAKE_COMMAND} -E rm -rf ${JavaExportImport_BINARY_DIR}/Root ) add_custom_target(CleanupTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/CleanupProject) set_property( SOURCE ${JavaExportImport_BINARY_DIR}/CleanupProject PROPERTY SYMBOLIC 1 ) get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(_isMultiConfig) set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}") else() if(CMAKE_BUILD_TYPE) set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}") else() set(NESTED_CONFIG_TYPE) endif() endif() configure_file(${JavaExportImport_SOURCE_DIR}/InitialCache.cmake.in ${JavaExportImport_BINARY_DIR}/InitialCache.cmake @ONLY) # Build the build exporter. add_custom_command( OUTPUT ${JavaExportImport_BINARY_DIR}/BuildExportProject COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE} --build-and-test ${JavaExportImport_SOURCE_DIR}/BuildExport ${JavaExportImport_BINARY_DIR}/BuildExport --build-noclean --build-project BuildExport --build-generator ${CMAKE_GENERATOR} --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}" --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}" --build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake VERBATIM ) add_custom_target(BuildExportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/BuildExportProject) add_dependencies(BuildExportTarget CleanupTarget) set_property( SOURCE ${JavaExportImport_BINARY_DIR}/BuildExportProject PROPERTY SYMBOLIC 1 ) # Build and install the install exporter. add_custom_command( OUTPUT ${JavaExportImport_BINARY_DIR}/InstallExportProject COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE} --build-and-test ${JavaExportImport_SOURCE_DIR}/InstallExport ${JavaExportImport_BINARY_DIR}/InstallExport --build-noclean --build-project InstallExport --build-target install --build-generator ${CMAKE_GENERATOR} --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}" --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}" --build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake VERBATIM ) add_custom_target(InstallExportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/InstallExportProject) add_dependencies(InstallExportTarget CleanupTarget) set_property( SOURCE ${JavaExportImport_BINARY_DIR}/InstallExportProject PROPERTY SYMBOLIC 1 ) # Build and install the importer. add_custom_command( OUTPUT ${JavaExportImport_BINARY_DIR}/ImportProject COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE} --build-and-test ${JavaExportImport_SOURCE_DIR}/Import ${JavaExportImport_BINARY_DIR}/Import --build-noclean --build-project Import --build-generator ${CMAKE_GENERATOR} --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}" --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}" --build-options -C${JavaExportImport_BINARY_DIR}/InitialCache.cmake -DJavaBuildExportTest_DIR:PATH=${JavaExportImport_BINARY_DIR}/BuildExport -DJavaInstallExportTest_DIR:PATH=${JavaExportImport_BINARY_DIR}/Root/share/cmake VERBATIM ) add_custom_target(ImportTarget ALL DEPENDS ${JavaExportImport_BINARY_DIR}/ImportProject) add_dependencies(ImportTarget BuildExportTarget InstallExportTarget) set_property( SOURCE ${JavaExportImport_BINARY_DIR}/ImportProject PROPERTY SYMBOLIC 1 ) add_executable(JavaExportImport main.c) add_dependencies(JavaExportImport ImportTarget)