92 lines
2.8 KiB
CMake
92 lines
2.8 KiB
CMake
|
|
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)
|