2007-05-09 23:10:12 +04:00
|
|
|
project(testRebuild)
|
2007-05-16 15:56:56 +04:00
|
|
|
add_library(foo STATIC ${testRebuild_BINARY_DIR}/foo.cxx)
|
2007-05-23 21:27:00 +04:00
|
|
|
|
|
|
|
# Add a generated header that regenerates when the generator is
|
|
|
|
# rebuilt.
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/regen.h
|
|
|
|
COMMAND generator ${CMAKE_CURRENT_BINARY_DIR}/regen.h regen
|
|
|
|
DEPENDS generator # adds file-level dependency to re-run rule
|
|
|
|
)
|
|
|
|
|
|
|
|
# Add a generated header that does NOT regenerate when the generator
|
|
|
|
# is rebuilt.
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/noregen.h
|
|
|
|
COMMAND generator ${CMAKE_CURRENT_BINARY_DIR}/noregen.h noregen
|
|
|
|
)
|
|
|
|
|
|
|
|
# Test that the generator rebuilds when the static library source file
|
|
|
|
# changes. This should cause regen.h to be recreated also.
|
|
|
|
add_executable(generator generator.cxx)
|
|
|
|
target_link_libraries(generator foo)
|
|
|
|
|
|
|
|
# Build an executable to drive the build and rebuild.
|
|
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
add_executable(bar bar.cxx
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/regen.h
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/noregen.h
|
|
|
|
)
|
2007-09-17 18:51:05 +04:00
|
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
IF("${CMAKE_GENERATOR}" MATCHES "Make")
|
|
|
|
# Test the IMPLICIT_DEPENDS feature.
|
|
|
|
SET(ZOT_DEPENDS IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/dep.cxx)
|
2007-12-21 20:22:12 +03:00
|
|
|
SET(ZOT_CUSTOM_DEP
|
|
|
|
IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/dep_custom.cxx)
|
2007-09-17 18:51:05 +04:00
|
|
|
ELSE("${CMAKE_GENERATOR}" MATCHES "Make")
|
|
|
|
# No IMPLICIT_DEPENDS...just depend directly.
|
|
|
|
SET(ZOT_DEPENDS DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/zot.hxx.in)
|
2007-12-21 20:22:12 +03:00
|
|
|
SET(ZOT_CUSTOM_DEP DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/zot_custom.hxx.in)
|
2007-09-17 18:51:05 +04:00
|
|
|
ENDIF("${CMAKE_GENERATOR}" MATCHES "Make")
|
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zot.hxx
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/zot.hxx.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/zot.hxx
|
|
|
|
${ZOT_DEPENDS}
|
|
|
|
)
|
|
|
|
|
2007-12-21 20:22:12 +03:00
|
|
|
add_custom_command(
|
|
|
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zot_custom.hxx
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/zot_custom.hxx.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/zot_custom.hxx
|
|
|
|
${ZOT_CUSTOM_DEP}
|
|
|
|
)
|
|
|
|
add_custom_target(zot_custom ALL DEPENDS
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/zot_custom.hxx)
|
|
|
|
|
2007-09-17 18:51:05 +04:00
|
|
|
add_executable(zot zot.cxx ${CMAKE_CURRENT_BINARY_DIR}/zot.hxx)
|
2007-12-21 20:22:12 +03:00
|
|
|
add_dependencies(zot zot_custom)
|