You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.7 KiB

cmake_minimum_required (VERSION 3.9)
project(ExportImport C CXX)
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()
# Wipe out the install tree to make sure the exporter works.
add_custom_command(
OUTPUT ${ExportImport_BINARY_DIR}/CleanupProject
COMMAND ${CMAKE_COMMAND} -E rm -rf ${ExportImport_BINARY_DIR}/Root
)
add_custom_target(CleanupTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/CleanupProject)
set_property(
SOURCE ${ExportImport_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()
if(MINGW OR MSYS)
# Test CMAKE_GNUtoMS whether we have VS or not.
set(ExportImport_GNUtoMS 1)
endif()
configure_file(${ExportImport_SOURCE_DIR}/InitialCache.cmake.in
${ExportImport_BINARY_DIR}/InitialCache.cmake @ONLY)
# Build and install the exporter.
add_custom_command(
OUTPUT ${ExportImport_BINARY_DIR}/ExportProject
COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
--build-and-test
${ExportImport_SOURCE_DIR}/Export
${ExportImport_BINARY_DIR}/Export
--build-noclean
--build-project Export
--build-target install
--build-generator ${CMAKE_GENERATOR}
--build-generator-platform "${CMAKE_GENERATOR_PLATFORM}"
--build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}"
--build-options -C${ExportImport_BINARY_DIR}/InitialCache.cmake
VERBATIM
)
add_custom_target(ExportTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/ExportProject)
add_dependencies(ExportTarget CleanupTarget)
set_property(
SOURCE ${ExportImport_BINARY_DIR}/ExportProject
PROPERTY SYMBOLIC 1
)
# Build and install the importer.
add_custom_command(
OUTPUT ${ExportImport_BINARY_DIR}/ImportProject
COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
--build-and-test
${ExportImport_SOURCE_DIR}/Import
${ExportImport_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${ExportImport_BINARY_DIR}/InitialCache.cmake
VERBATIM
)
add_custom_target(ImportTarget ALL DEPENDS ${ExportImport_BINARY_DIR}/ImportProject)
add_dependencies(ImportTarget ExportTarget)
set_property(
SOURCE ${ExportImport_BINARY_DIR}/ImportProject
PROPERTY SYMBOLIC 1
)
add_executable(ExportImport main.c)
add_dependencies(ExportImport ImportTarget)