| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- cmake_minimum_required(VERSION 2.6)
- project(testRebuild)
- if(APPLE)
- # only use multi-arch if the sysroot exists on this machine
- if(EXISTS "${CMAKE_OSX_SYSROOT}")
- set(CMAKE_OSX_ARCHITECTURES "ppc;i386")
- endif(EXISTS "${CMAKE_OSX_SYSROOT}")
- endif(APPLE)
- add_library(foo STATIC ${testRebuild_BINARY_DIR}/foo.cxx)
- set_target_properties(foo PROPERTIES OUTPUT_NAME "foolib")
- # 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)
- set_target_properties(generator PROPERTIES OUTPUT_NAME "gen")
- # 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
- )
- #-----------------------------------------------------------------------------
- IF("${CMAKE_GENERATOR}" MATCHES "Make")
- # Test the IMPLICIT_DEPENDS feature.
- SET(ZOT_DEPENDS IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/dep.cxx)
- SET(ZOT_CUSTOM_DEP
- IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/dep_custom.cxx)
- ELSE("${CMAKE_GENERATOR}" MATCHES "Make")
- # No IMPLICIT_DEPENDS...just depend directly.
- SET(ZOT_DEPENDS DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/zot.hxx.in)
- SET(ZOT_CUSTOM_DEP DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/zot_custom.hxx.in)
- 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}
- )
- 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)
- add_executable(zot zot.cxx ${CMAKE_CURRENT_BINARY_DIR}/zot.hxx
- zot_macro_dir.cxx zot_macro_tgt.cxx)
- add_dependencies(zot zot_custom)
- # Test the #include line macro transformation rule support.
- set_property(
- TARGET zot
- PROPERTY IMPLICIT_DEPENDS_INCLUDE_TRANSFORM "ZOT_TGT(%)=<zot_%_tgt.hxx>"
- )
- set_property(
- DIRECTORY
- PROPERTY IMPLICIT_DEPENDS_INCLUDE_TRANSFORM "ZOT_DIR(%)=<zot_%_dir.hxx>"
- )
|