|
|
@@ -0,0 +1,89 @@
|
|
|
+
|
|
|
+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-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-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)
|