| |
| cmake_minimum_required(VERSION 2.8.12) |
| project(StagingPrefix) |
| |
| # Wipe out the install tree |
| add_custom_command( |
| OUTPUT ${CMAKE_BINARY_DIR}/CleanupProject |
| COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/ConsumerBuild |
| COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/ProducerBuild |
| COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/stage |
| COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/prefix |
| COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/ignored |
| ) |
| add_custom_target(CleanupTarget ALL DEPENDS ${CMAKE_BINARY_DIR}/CleanupProject) |
| set_property( |
| SOURCE ${CMAKE_BINARY_DIR}/CleanupProject |
| PROPERTY SYMBOLIC 1 |
| ) |
| |
| if(CMAKE_CONFIGURATION_TYPES) |
| 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() |
| |
| # Build and install the producer. |
| add_custom_command( |
| OUTPUT ${CMAKE_BINARY_DIR}/ProducerProject |
| COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE} |
| --build-and-test |
| ${CMAKE_SOURCE_DIR}/Producer |
| ${CMAKE_BINARY_DIR}/ProducerBuild |
| --build-noclean |
| --build-project Producer |
| --build-target install |
| --build-generator ${CMAKE_GENERATOR} |
| --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}" |
| --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}" |
| --build-options |
| -DCMAKE_VERBOSE_MAKEFILE=1 |
| "-DCMAKE_STAGING_PREFIX=${CMAKE_BINARY_DIR}/stage" |
| "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/prefix" |
| VERBATIM |
| ) |
| |
| add_custom_target(ProducerTarget ALL DEPENDS ${CMAKE_BINARY_DIR}/ProducerProject) |
| add_dependencies(ProducerTarget CleanupTarget) |
| set_property( |
| SOURCE ${CMAKE_BINARY_DIR}/ProducerProject |
| PROPERTY SYMBOLIC 1 |
| ) |
| |
| if(NOT WIN32) |
| file(WRITE |
| "${CMAKE_BINARY_DIR}/ignored/${CMAKE_BINARY_DIR}/stage/include/ignored.h" |
| "#define IGNORED\n" |
| ) |
| endif() |
| |
| # Build and install the consumer. |
| add_custom_command( |
| OUTPUT ${CMAKE_BINARY_DIR}/ConsumerProject |
| COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE} |
| --build-and-test |
| ${CMAKE_SOURCE_DIR}/Consumer |
| ${CMAKE_BINARY_DIR}/ConsumerBuild |
| --build-noclean |
| --build-project Consumer |
| --build-target install |
| --build-generator ${CMAKE_GENERATOR} |
| --build-generator-platform "${CMAKE_GENERATOR_PLATFORM}" |
| --build-generator-toolset "${CMAKE_GENERATOR_TOOLSET}" |
| --build-options |
| "-DCMAKE_FIND_ROOT_PATH=${CMAKE_BINARY_DIR}/ignored" |
| "-DCMAKE_STAGING_PREFIX=${CMAKE_BINARY_DIR}/stage" |
| -DCMAKE_VERBOSE_MAKEFILE=1 |
| VERBATIM |
| ) |
| add_custom_target(ConsumerTarget ALL DEPENDS ${CMAKE_BINARY_DIR}/ConsumerProject) |
| add_dependencies(ConsumerTarget ProducerTarget) |
| set_property( |
| SOURCE ${CMAKE_BINARY_DIR}/ConsumerProject |
| PROPERTY SYMBOLIC 1 |
| ) |
| |
| add_executable(StagingPrefix main.cpp) |
| add_dependencies(StagingPrefix ConsumerTarget) |